@@ -335,41 +335,79 @@ const createTypeScriptConfig = async (destDir, lang) => {
335
335
return fsPromises . writeFile ( resultFile , tsConfigJson )
336
336
}
337
337
338
- const showInstructions = ( lang ) => {
339
- console . info ( 'The application has been generated!' )
340
- if ( lang === 'js' ) {
341
- console . info ( `Use
338
+ class JsGenerator {
339
+
340
+ usageExampleAsText ( ) {
341
+ return `Use
342
342
npm install
343
343
to install its dependencies and
344
344
export DB_NAME=db DB_USER=user DB_PASSWORD=secret
345
345
npm start
346
- afteward to run` )
347
- } else if ( lang === 'ts' ) {
348
- console . info ( `Use
346
+ afteward to run`
347
+ }
348
+
349
+ }
350
+
351
+ class TsGenerator {
352
+
353
+ usageExampleAsText ( ) {
354
+ return `Use
349
355
npm install
350
356
to install its dependencies,
351
357
npm run build
352
358
to build the application, and
353
359
export DB_NAME=db DB_USER=user DB_PASSWORD=secret
354
360
npm start
355
- afteward to run` )
356
- } else if ( lang === 'go' ) {
357
- console . info ( `Use
361
+ afteward to run`
362
+ }
363
+
364
+ }
365
+
366
+ class GoGenerator {
367
+
368
+ usageExampleAsText ( ) {
369
+ return `Use
358
370
export DB_NAME=db DB_USER=user DB_PASSWORD=secret
359
371
go run *.go
360
372
or
361
373
go build -o app
362
374
export DB_NAME=db DB_USER=user DB_PASSWORD=secret
363
375
./app
364
- to build and run it` )
365
- } else if ( lang === 'python' ) {
366
- console . info ( `Use
376
+ to build and run it`
377
+ }
378
+
379
+ }
380
+
381
+ class PyGenerator {
382
+
383
+ usageExampleAsText ( ) {
384
+ return `Use
367
385
pip install -r requirements.txt
368
386
to install its dependencies and
369
387
export DB_NAME=db DB_USER=user DB_PASSWORD=secret
370
388
uvicorn app:app
371
- afteward to run` )
389
+ afteward to run`
390
+ }
391
+
392
+ }
393
+
394
+ class Generator {
395
+
396
+ static for ( lang ) {
397
+ switch ( lang ) {
398
+ case 'js' :
399
+ return new JsGenerator ( )
400
+ case 'ts' :
401
+ return new TsGenerator ( )
402
+ case 'go' :
403
+ return new GoGenerator ( )
404
+ case 'python' :
405
+ return new PyGenerator ( )
406
+ default :
407
+ throw new Error ( `Unsupported language: ${ lang } ` )
408
+ }
372
409
}
410
+
373
411
}
374
412
375
413
const absolutePathToDestDir = ( argv ) => {
@@ -388,12 +426,16 @@ const main = async (argv) => {
388
426
fs . mkdirSync ( destDir , { recursive : true } )
389
427
}
390
428
429
+ const generator = Generator . for ( argv . lang )
430
+
391
431
await createApp ( destDir , argv )
392
432
await createDb ( destDir , argv )
393
433
await createEndpoints ( destDir , argv , config )
394
434
await createDependenciesDescriptor ( destDir , argv )
395
435
await createTypeScriptConfig ( destDir , argv . lang )
396
- showInstructions ( argv . lang )
436
+
437
+ console . info ( 'The application has been generated!' )
438
+ console . info ( generator . usageExampleAsText ( ) )
397
439
}
398
440
399
441
0 commit comments