@@ -83,7 +83,7 @@ export class Creator<T extends Record<string, unknown>> extends TypedEvents<{
83
83
await fse . emptyDir ( context . projectRoot ) ;
84
84
break ;
85
85
case 'cancel' :
86
- throw new ExitError ( 'Canceled by user ' , 0 ) ;
86
+ throw new ExitError ( 'Operation cancelled ' , 0 ) ;
87
87
default :
88
88
break ;
89
89
}
@@ -119,6 +119,21 @@ export class Creator<T extends Record<string, unknown>> extends TypedEvents<{
119
119
) ;
120
120
}
121
121
122
+ const spinner = prompts . spinner ( ) ;
123
+ spinner . start ( 'Generating project files.' ) ;
124
+ const [ err ] = await tryFlatten ( this . #generateWriteFiles( paths ) ) ;
125
+
126
+ if ( err ) {
127
+ spinner . stop ( 'Failed to generate project files' , 1 ) ;
128
+ throw new ExitError ( `Failed to generate project files: ${ err . message } ` , 1 ) ;
129
+ }
130
+
131
+ spinner . stop ( 'Generated project files' , 0 ) ;
132
+ }
133
+
134
+ async #generateWriteFiles( paths : string [ ] ) {
135
+ const { context, options } = this ;
136
+
122
137
for ( const sourcePath of paths ) {
123
138
const sourceFileName = path . basename ( sourcePath ) ;
124
139
const sourceFolder = path . dirname ( sourcePath ) ;
@@ -161,11 +176,11 @@ export class Creator<T extends Record<string, unknown>> extends TypedEvents<{
161
176
targetFileName : path . basename ( targetPath ) ,
162
177
} ;
163
178
164
- await this . #write ( fileMeta ) ;
179
+ await this . #generateWriteFile ( fileMeta ) ;
165
180
}
166
181
}
167
182
168
- async #write ( fileMeta : FileMeta ) {
183
+ async #generateWriteFile ( fileMeta : FileMeta ) {
169
184
const { context, options } = this ;
170
185
const overrideFileMeta = await this . #writeMW. when (
171
186
path . join ( context . templateName , fileMeta . sourcePath ) ,
@@ -184,9 +199,9 @@ export class Creator<T extends Record<string, unknown>> extends TypedEvents<{
184
199
185
200
if ( fileMeta . isEjsFile && ! disableRenderEjs ) {
186
201
const template = await fse . readFile ( fileMeta . sourceFile , 'utf8' ) ;
187
- fse . outputFileSync ( targetFile , ejs . render ( template , this . data ) ) ;
202
+ await fse . outputFile ( targetFile , ejs . render ( template , this . data ) ) ;
188
203
} else {
189
- fse . copySync ( fileMeta . sourceFile , targetFile ) ;
204
+ await fse . copy ( fileMeta . sourceFile , targetFile ) ;
190
205
}
191
206
192
207
await this . emit ( 'written' , fileMeta , this . data , overrideFileMeta ) ;
0 commit comments