Skip to content

Commit 93c4475

Browse files
authored
Merge pull request #67 from bertdeblock/avoid-duplicate-templates
Avoid duplicate templates
2 parents a761790 + df8bb11 commit 93c4475

File tree

8 files changed

+28
-88
lines changed

8 files changed

+28
-88
lines changed

src/file-reference.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { pathExists } from "fs-extra/esm";
12
import { join, parse, type ParsedPath } from "node:path";
23

34
export class FileReference {
@@ -23,6 +24,10 @@ export class FileReference {
2324
this.subDir = subDir;
2425
}
2526

27+
exists(): Promise<boolean> {
28+
return pathExists(this.path());
29+
}
30+
2631
parse(): ParsedPath {
2732
return parse(this.path());
2833
}

src/generator.ts

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,15 @@ type GeneratorArg = {
3939
type: "boolean" | "positional" | "string";
4040
};
4141

42-
type ModifyTargetFile = (targetFile: FileReference, args: Args) => void;
43-
type ModifyTemplateFile = (templateFile: FileReference, args: Args) => void;
42+
type ModifyTargetFile = (
43+
targetFile: FileReference,
44+
args: Args,
45+
) => Promise<void> | void;
46+
47+
type ModifyTemplateFile = (
48+
templateFile: FileReference,
49+
args: Args,
50+
) => Promise<void> | void;
4451

4552
// eslint-disable-next-line @typescript-eslint/no-explicit-any
4653
type Args = Record<string, any>;
@@ -88,16 +95,16 @@ export function defineGenerator({
8895
subDir: generatorName,
8996
});
9097

91-
modifyTargetFile?.(targetFile, resolvedArgs);
92-
modifyTemplateFile?.(templateFile, resolvedArgs);
98+
await modifyTargetFile?.(targetFile, resolvedArgs);
99+
await modifyTemplateFile?.(templateFile, resolvedArgs);
93100

94101
if (targetFile.subDir === "") {
95102
targetFile.subDir = join(getSrcDir(packageJson), generatorName + "s");
96103
}
97104

98105
for (const arg of generatorArgs) {
99-
arg.modifyTargetFile?.(targetFile, resolvedArgs);
100-
arg.modifyTemplateFile?.(templateFile, resolvedArgs);
106+
await arg.modifyTargetFile?.(targetFile, resolvedArgs);
107+
await arg.modifyTemplateFile?.(templateFile, resolvedArgs);
101108
}
102109

103110
const templateContent = await readFile(templateFile.path(), "utf-8");
@@ -289,8 +296,16 @@ export function typescript({
289296
modifyTargetFile: (targetFile, args): void => {
290297
targetFile.ext = args.typescript ? tsExt : jsExt;
291298
},
292-
modifyTemplateFile: (templateFile, args): void => {
293-
templateFile.ext = args.typescript ? tsExt : jsExt;
299+
modifyTemplateFile: async (templateFile, args): Promise<void> => {
300+
if (args.typescript) {
301+
templateFile.ext = tsExt;
302+
303+
if ((await templateFile.exists()) === false) {
304+
templateFile.ext = jsExt;
305+
}
306+
} else {
307+
templateFile.ext = jsExt;
308+
}
294309
},
295310
name: "typescript",
296311
type: "boolean",

templates/acceptance-test/acceptance-test.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

templates/component-test/component-test.gts

Lines changed: 0 additions & 24 deletions
This file was deleted.

templates/helper-test/helper-test.gts

Lines changed: 0 additions & 15 deletions
This file was deleted.

templates/helper/helper.function-based.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.

templates/modifier-test/modifier-test.gts

Lines changed: 0 additions & 13 deletions
This file was deleted.

templates/service-test/service-test.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)