@@ -8,71 +8,77 @@ import ts, {factory} from 'typescript'
88import { graphqlGenTs1 } from "../tests/typeAlias.example"
99import { Formatter , TableType , UiFramework } from "../definition/context-types"
1010import { AppGenerator } from "../generation/generators/app-generator"
11- import { createAst , parseGraphqlTypes , sourceFileEntity } from "../tests/helper"
12-
13- const LIST_COMPONENT = 'list'
14- const DETAIL_COMPONENT = 'detail'
11+ import sourceFileEntity , { createAst , parseGraphqlTypes } from "../tests/helper"
1512
1613const args = yargs . options ( {
1714 'basePath' : { type : 'string' , demandOption : true , alias : 'p' } ,
1815 'fileName' : { type : 'string' , demandOption : true , alias : 'f' } ,
19- 'ui' : { type : 'string' , demandOption : true , alias : 'u' , choices : [ UiFramework . MaterialUI . toString ( ) , UiFramework . Grommet . toString ( ) ] } ,
20- 'formatter' : { type : 'string' , demandOption : true , alias : 'fr' , choices : [ Formatter . ReactIntl . toString ( ) , Formatter . None . toString ( ) ] } ,
21- 'component' : { type : 'string' , demandOption : true , alias : 'c' , choices : [ LIST_COMPONENT , DETAIL_COMPONENT ] } ,
22- 'table' : { type : 'string' , demandOption : true , alias : 't' , choices : [ TableType . DataTable . toString ( ) , TableType . BasicTable . toString ( ) ] } ,
16+ 'ui' : { type : 'string' , demandOption : true , alias : 'u' } ,
17+ 'formatter' : { type : 'string' , demandOption : true , alias : 'fr' } ,
18+ 'component' : { type : 'string' , demandOption : true , alias : 'c' } ,
19+ 'table' : { type : 'string' , demandOption : true , alias : 't' } ,
2320 } ) . argv ;
2421
25- async function generateList ( ) {
26- const sourceFile = createAst ( '' )
27- const myClassFile = parseGraphqlTypes ( graphqlGenTs1 )
28- const testEntity = sourceFileEntity ( myClassFile )
22+ class LocalCodegenCli {
23+ async generateList ( ) {
24+ const sourceFile = createAst ( '' )
25+ const myClassFile = parseGraphqlTypes ( graphqlGenTs1 )
26+ const testEntity = sourceFileEntity ( myClassFile )
2927
30- let uif : UiFramework = ( < any > UiFramework ) [ args [ 'ui' ] ] ;
31- let formatter : Formatter = ( < any > Formatter ) [ args [ 'formatter' ] ] ;
32- let tableType : TableType = ( < any > TableType ) [ args [ 'table' ] ] ;
33-
34- let generationContext = { uiFramework : uif , formatter : formatter , index : { tableType : tableType , height : "400px" } } ;
35- let generator = new AppGenerator ( generationContext , testEntity ! ! ) ;
28+ let uif : UiFramework = ( < any > UiFramework ) [ args [ 'ui' ] ] ;
29+ let formatter : Formatter = ( < any > Formatter ) [ args [ 'formatter' ] ] ;
30+ let tableType : TableType = ( < any > TableType ) [ args [ 'table' ] ] ;
31+
32+ let generationContext = { uiFramework : uif , formatter : formatter , index : { tableType : tableType , height : "400px" } } ;
33+ let generator = new AppGenerator ( generationContext , testEntity ! ! ) ;
34+
35+ const page = generator . generateListComponent ( )
36+
37+ const printer = ts . createPrinter ( { newLine : ts . NewLineKind . LineFeed } )
38+
39+ let sourceCode = printer . printList ( ts . ListFormat . MultiLine , factory . createNodeArray ( [ ...page ! . imports , page ! . functionDeclaration ] ) , sourceFile )
40+
3641
37- const page = generator . generateListPage ( )
38-
39- const printer = ts . createPrinter ( { newLine : ts . NewLineKind . LineFeed } )
40- let sourceCode = printer . printList ( ts . ListFormat . MultiLine , factory . createNodeArray ( [ ...page . imports , page . functionDeclaration ] ) , sourceFile )
41- saveFile ( sourceCode , args [ 'basePath' ] , args [ 'fileName' ] )
42- }
42+ this . saveFile ( sourceCode , args [ 'basePath' ] , args [ 'fileName' ] )
43+ }
4344
44- async function generateDetail ( ) {
45- const sourceFile = createAst ( '' )
46- const myClassFile = parseGraphqlTypes ( graphqlGenTs1 )
47- const testEntity = sourceFileEntity ( myClassFile )
45+ async generateDetail ( ) {
46+ const sourceFile = createAst ( '' )
47+ const myClassFile = parseGraphqlTypes ( graphqlGenTs1 )
48+ const testEntity = sourceFileEntity ( myClassFile )
4849
49- let uif : UiFramework = ( < any > UiFramework ) [ args [ 'ui' ] ] ;
50- let formatter : Formatter = ( < any > Formatter ) [ args [ 'formatter' ] ] ;
51- let tableType : TableType = ( < any > TableType ) [ args [ 'table' ] ] ;
52-
53- let generationContext = { uiFramework : uif , formatter : formatter , index : { tableType : tableType , height : "400px" } } ;
54- let generator = new AppGenerator ( generationContext , testEntity ! ! ) ;
50+ let uif : UiFramework = ( < any > UiFramework ) [ args [ 'ui' ] ] ;
51+ let formatter : Formatter = ( < any > Formatter ) [ args [ 'formatter' ] ] ;
52+ let tableType : TableType = ( < any > TableType ) [ args [ 'table' ] ] ;
53+
54+ let generationContext = { uiFramework : uif , formatter : formatter , index : { tableType : tableType , height : "400px" } } ;
55+ let generator = new AppGenerator ( generationContext , testEntity ! ! ) ;
56+
57+ const page = generator . generateDetailPage ( )
58+
59+ const printer = ts . createPrinter ( { newLine : ts . NewLineKind . LineFeed } )
60+
61+ let sourceCode = printer . printList ( ts . ListFormat . MultiLine , factory . createNodeArray ( [ ...page . imports , page . functionDeclaration ] ) , sourceFile )
62+
63+ this . saveFile ( sourceCode , args [ 'basePath' ] , args [ 'fileName' ] )
64+ }
5565
56- const page = generator . generateDetailPage ( )
57-
58- const printer = ts . createPrinter ( { newLine : ts . NewLineKind . LineFeed } )
59- let sourceCode = printer . printList ( ts . ListFormat . MultiLine , factory . createNodeArray ( [ ...page . imports , page . functionDeclaration ] ) , sourceFile )
60- saveFile ( sourceCode , args [ 'basePath' ] , args [ 'fileName' ] )
61- }
66+ async saveFile ( sourceCode : string , basePath :string , fileName : string ) {
67+ let filePath = basePath + fileName
6268
63- async function saveFile ( sourceCode : string , basePath :string , fileName : string ) {
64- let filePath = basePath + fileName
65-
66- await fs . writeFile ( filePath , sourceCode , function ( err ) {
67- if ( err ) {
68- return console . error ( err ) ;
69- }
70- console . log ( "File created!" ) ;
71- } ) ;
69+ await fs . writeFile ( filePath , sourceCode , function ( err ) {
70+ if ( err ) {
71+ return console . error ( err ) ;
72+ }
73+ console . log ( "File created!" ) ;
74+ } ) ;
75+ }
7276}
7377
74- if ( args . component === LIST_COMPONENT )
75- generateList ( )
76- else if ( args . component === DETAIL_COMPONENT ) {
77- generateDetail ( )
78+ const cli = new LocalCodegenCli ( )
79+
80+ if ( args [ 'component' ] === 'list' )
81+ cli . generateList ( )
82+ else if ( args [ 'component' ] === 'detail' ) {
83+ cli . generateDetail ( )
7884}
0 commit comments