|
5 | 5 | // type CommandDef, |
6 | 6 | type SubCommandsDef, |
7 | 7 | } from "citty"; |
8 | | -import { GemberError, logGemberErrors } from "./errors.js"; |
| 8 | +import { GemberBugError, GemberError, logGemberErrors } from "./errors.js"; |
9 | 9 | import { generators } from "./generators/generators.js"; |
10 | 10 | import { readOwnPackageJsonSync } from "./internal.js"; |
11 | 11 | import { logger } from "./logger.js"; |
@@ -61,8 +61,8 @@ const main = defineCommand({ |
61 | 61 | ); |
62 | 62 |
|
63 | 63 | if (selectedGenerator === undefined) { |
64 | | - throw new GemberError( |
65 | | - `[BUG] Could not find generator \`${selectedGeneratorName}\`.`, |
| 64 | + throw new GemberBugError( |
| 65 | + `Could not find generator \`${selectedGeneratorName}\`.`, |
66 | 66 | ); |
67 | 67 | } |
68 | 68 |
|
@@ -124,6 +124,31 @@ function generatorCommands(deprecated?: boolean): SubCommandsDef { |
124 | 124 |
|
125 | 125 | logGemberErrors(async () => { |
126 | 126 | await generator.run(context.args); |
| 127 | + |
| 128 | + if (context.args.test) { |
| 129 | + if (generator.isTestGenerator) { |
| 130 | + logger.warn( |
| 131 | + `You passed the \`--test\` option, but the \`${generator.name}\` generator is already a test generator.`, |
| 132 | + ); |
| 133 | + } else if (generator.args.find((arg) => arg.name === "test")) { |
| 134 | + const testGeneratorName = `${generator.name}-test`; |
| 135 | + const testGenerator = generators.find( |
| 136 | + (g) => g.name === testGeneratorName, |
| 137 | + ); |
| 138 | + |
| 139 | + if (testGenerator) { |
| 140 | + await testGenerator.run(context.args); |
| 141 | + } else { |
| 142 | + throw new GemberBugError( |
| 143 | + `Could not find generator \`${testGeneratorName}\`.`, |
| 144 | + ); |
| 145 | + } |
| 146 | + } else { |
| 147 | + logger.warn( |
| 148 | + `You passed the \`--test\` option, but the \`${generator.name}\` generator does not have a corresponding test generator.`, |
| 149 | + ); |
| 150 | + } |
| 151 | + } |
127 | 152 | }); |
128 | 153 | }, |
129 | 154 | }; |
|
0 commit comments