Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import eslint from "@eslint/js";
import { defineConfig } from "eslint/config";
import { defineConfig, globalIgnores } from "eslint/config";
import eslintPluginNode from "eslint-plugin-n";
import typescriptEslint from "typescript-eslint";

export default defineConfig(
globalIgnores([
"bin",
"coverage",
"dist",
"templates",
"test/output",
"test/packages/**/*.cjs",
]),

eslint.configs.recommended,
typescriptEslint.configs.recommended,
eslintPluginNode.configs["flat/recommended-module"],
{
ignores: [
"bin",
"coverage",
"dist",
"templates",
"test/output",
"test/packages/**/*.cjs",
],
},

{
files: ["**/*.ts"],
rules: {
Expand Down
31 changes: 8 additions & 23 deletions src/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@ import {
// type CommandDef,
type SubCommandsDef,
} from "citty";
import { GemberBugError, GemberError, logGemberErrors } from "./errors.js";
import { generators } from "./generators/generators.js";
import { GemberError, logGemberErrors } from "./errors.js";
import {
generators,
getGenerator,
getTestGenerator,
} from "./generators/generators.js";
import { readOwnPackageJsonSync } from "./internal.js";
import { logger } from "./logger.js";

Expand Down Expand Up @@ -56,15 +60,7 @@ export const main = defineCommand({
let entityName: string | undefined;

for (const selectedGeneratorName of selectedGeneratorNames.sort()) {
const selectedGenerator = generators.find(
(generator) => generator.name === selectedGeneratorName,
);

if (selectedGenerator === undefined) {
throw new GemberBugError(
`Could not find generator \`${selectedGeneratorName}\`.`,
);
}
const selectedGenerator = getGenerator(selectedGeneratorName);

entityName = await logger.prompt(
`Please provide a name for generator \`${selectedGenerator.name}\`:`,
Expand Down Expand Up @@ -132,18 +128,7 @@ function generatorCommands(deprecated?: boolean): SubCommandsDef {
`You passed the \`--test\` option, but the \`${generator.name}\` generator is already a test generator.`,
);
} else if (generator.args.find((arg) => arg.name === "test")) {
const testGeneratorName = `${generator.name}-test`;
const testGenerator = generators.find(
(g) => g.name === testGeneratorName,
);

if (testGenerator) {
await testGenerator.run(context.args);
} else {
throw new GemberBugError(
`Could not find generator \`${testGeneratorName}\`.`,
);
}
await getTestGenerator(generator.name).run(context.args);
} else {
logger.warn(
`You passed the \`--test\` option, but the \`${generator.name}\` generator does not have a corresponding test generator.`,
Expand Down
10 changes: 7 additions & 3 deletions src/generators/generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -259,12 +259,16 @@ export function defineTestGenerator(
);
}

targetFile.name += "-test";
targetFile.name = testGeneratorName(targetFile.name);
},
name: `${options.name}-test`,
name: testGeneratorName(options.name),
});
}

export function testGeneratorName(generatorName: string): string {
return generatorName + "-test";
}

export function classBased({
functionBasedName = "function-based",
}: { functionBasedName?: string } = {}): GeneratorArgFactory {
Expand Down Expand Up @@ -351,7 +355,7 @@ export function path(): GeneratorArgFactory {

export function test(): GeneratorArgFactory {
return (generatorName) => ({
description: `Generate a corresponding ${generatorName}-test`,
description: `Generate a corresponding ${testGeneratorName(generatorName)}`,
name: "test",
type: "boolean",
});
Expand Down
18 changes: 18 additions & 0 deletions src/generators/generators.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import { GemberBugError } from "../errors.js";
import {
classBased,
defineGenerator,
defineTestGenerator,
nested,
test,
testGeneratorName,
typescript,
type Generator,
} from "./generator.js";
Expand Down Expand Up @@ -68,3 +70,19 @@ export const generators: Generator[] = [
testsSubDir: "",
}),
];

export function getGenerator(generatorName: string): Generator {
const generator = generators.find(
(generator) => generator.name === generatorName,
);

if (generator === undefined) {
throw new GemberBugError(`Could not find generator \`${generatorName}\`.`);
}

return generator;
}

export function getTestGenerator(generatorName: string): Generator {
return getGenerator(testGeneratorName(generatorName));
}