@@ -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
4653type 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" ,
0 commit comments