1
- import { Argument , program } from 'commander' ;
1
+ import { Argument , Option , program } from 'commander' ;
2
2
import semver from 'semver' ;
3
3
4
4
import { buildLanguages } from '../buildLanguages.ts' ;
@@ -29,10 +29,11 @@ const args = {
29
29
} ;
30
30
31
31
const flags = {
32
- verbose : {
33
- flag : '-v, --verbose' ,
34
- description : 'make the generation verbose' ,
35
- } ,
32
+ verbose : new Option ( '-v, --verbose' , 'make the generation verbose' ) ,
33
+ debugger : new Option (
34
+ '-d, --debugger' ,
35
+ 'runs the generator in debug mode, it will wait for a Java debugger to be attached' ,
36
+ ) ,
36
37
} ;
37
38
38
39
program . name ( 'cli' ) ;
@@ -49,16 +50,17 @@ program
49
50
. description ( 'Generate a specified client' )
50
51
. addArgument ( args . language )
51
52
. addArgument ( args . clients )
52
- . option ( flags . verbose . flag , flags . verbose . description )
53
- . action ( async ( langArg : LangArg , clientArg : string [ ] , { verbose } ) => {
53
+ . addOption ( flags . verbose )
54
+ . addOption ( flags . debugger )
55
+ . action ( async ( langArg : LangArg , clientArg : string [ ] , { verbose, debugger : withDebugger } ) => {
54
56
const { language, client, clientList } = transformSelection ( {
55
57
langArg,
56
58
clientArg,
57
59
} ) ;
58
60
59
61
setVerbose ( Boolean ( verbose ) ) ;
60
62
61
- await generate ( generatorList ( { language, client, clientList } ) ) ;
63
+ await generate ( generatorList ( { language, client, clientList } ) , Boolean ( withDebugger ) ) ;
62
64
} ) ;
63
65
64
66
const buildCommand = program . command ( 'build' ) . description ( 'Build the clients or specs' ) ;
@@ -68,7 +70,7 @@ buildCommand
68
70
. description ( 'Build a specified client' )
69
71
. addArgument ( args . language )
70
72
. addArgument ( args . clients )
71
- . option ( flags . verbose . flag , flags . verbose . description )
73
+ . addOption ( flags . verbose )
72
74
. action ( async ( langArg : LangArg , clientArg : string [ ] , { verbose } ) => {
73
75
const { language, client, clientList } = transformSelection ( {
74
76
langArg,
@@ -85,7 +87,7 @@ buildCommand
85
87
. description ( 'Build a specified playground' )
86
88
. addArgument ( args . language )
87
89
. addArgument ( args . clients )
88
- . option ( flags . verbose . flag , flags . verbose . description )
90
+ . addOption ( flags . verbose )
89
91
. action ( async ( langArg : LangArg , clientArg : string [ ] , { verbose } ) => {
90
92
const { language, client, clientList } = transformSelection ( {
91
93
langArg,
@@ -102,7 +104,7 @@ buildCommand
102
104
. description ( 'Build a specified snippets' )
103
105
. addArgument ( args . language )
104
106
. addArgument ( args . clients )
105
- . option ( flags . verbose . flag , flags . verbose . description )
107
+ . addOption ( flags . verbose )
106
108
. action ( async ( langArg : LangArg , clientArg : string [ ] , { verbose } ) => {
107
109
const { language, client, clientList } = transformSelection ( {
108
110
langArg,
@@ -119,7 +121,7 @@ buildCommand
119
121
. description ( 'Build a specified guides' )
120
122
. addArgument ( args . language )
121
123
. addArgument ( args . clients )
122
- . option ( flags . verbose . flag , flags . verbose . description )
124
+ . addOption ( flags . verbose )
123
125
. action ( async ( langArg : LangArg , clientArg : string [ ] , { verbose } ) => {
124
126
const { language, client, clientList } = transformSelection ( {
125
127
langArg,
@@ -135,7 +137,7 @@ buildCommand
135
137
. command ( 'specs' )
136
138
. description ( 'Build a specified spec' )
137
139
. addArgument ( args . clients )
138
- . option ( flags . verbose . flag , flags . verbose . description )
140
+ . addOption ( flags . verbose )
139
141
. option ( '-s, --skip-cache' , 'skip cache checking to force building specs' )
140
142
. option ( '-j, --json' , 'outputs the spec in JSON instead of yml' )
141
143
. option ( '-d, --docs' , 'generates the doc specs with the code snippets' )
@@ -172,25 +174,26 @@ ctsCommand
172
174
. description ( 'Generate the CTS tests' )
173
175
. addArgument ( args . language )
174
176
. addArgument ( args . clients )
175
- . option ( flags . verbose . flag , flags . verbose . description )
177
+ . addOption ( flags . verbose )
178
+ . addOption ( flags . debugger )
176
179
. option ( '--lv, --language-version <version>' , 'the version of the language to use' )
177
- . action ( async ( langArg : LangArg , clientArg : string [ ] , { verbose, languageVersion } ) => {
180
+ . action ( async ( langArg : LangArg , clientArg : string [ ] , { verbose, debugger : withDebugger , languageVersion } ) => {
178
181
const { language, client, clientList } = transformSelection ( {
179
182
langArg,
180
183
clientArg,
181
184
} ) ;
182
185
183
186
setVerbose ( Boolean ( verbose ) ) ;
184
187
185
- await ctsGenerateMany ( generatorList ( { language, client, clientList } ) , languageVersion ) ;
188
+ await ctsGenerateMany ( generatorList ( { language, client, clientList } ) , withDebugger , languageVersion ) ;
186
189
} ) ;
187
190
188
191
ctsCommand
189
192
. command ( 'run' )
190
193
. description ( 'Run the tests for the CTS' )
191
194
. addArgument ( args . language )
192
195
. addArgument ( args . clients )
193
- . option ( flags . verbose . flag , flags . verbose . description )
196
+ . addOption ( flags . verbose )
194
197
. option ( '-e, --no-e2e' , 'skip the e2e tests, that requires internet connection' )
195
198
. option ( '-c, --no-client' , 'skip the client tests' )
196
199
. option ( '-r, --no-requests' , 'skip the requests tests' )
@@ -250,7 +253,7 @@ program
250
253
. description ( 'Format the specified folder for a specific language' )
251
254
. addArgument ( args . requiredLanguage )
252
255
. argument ( 'folder' , 'The folder to format' )
253
- . option ( flags . verbose . flag , flags . verbose . description )
256
+ . addOption ( flags . verbose )
254
257
. action ( async ( language : string , folder : string , { verbose } ) => {
255
258
setVerbose ( Boolean ( verbose ) ) ;
256
259
@@ -262,25 +265,27 @@ program
262
265
. description ( 'Generate the snippets' )
263
266
. addArgument ( args . language )
264
267
. addArgument ( args . clients )
265
- . option ( flags . verbose . flag , flags . verbose . description )
266
- . action ( async ( langArg : LangArg , clientArg : string [ ] , { verbose } ) => {
268
+ . addOption ( flags . verbose )
269
+ . addOption ( flags . debugger )
270
+ . action ( async ( langArg : LangArg , clientArg : string [ ] , { verbose, debugger : withDebugger } ) => {
267
271
const { language, client, clientList } = transformSelection ( {
268
272
langArg,
269
273
clientArg,
270
274
} ) ;
271
275
272
276
setVerbose ( Boolean ( verbose ) ) ;
273
277
274
- await docsGenerateMany ( generatorList ( { language, client, clientList } ) , 'snippets' ) ;
278
+ await docsGenerateMany ( generatorList ( { language, client, clientList } ) , 'snippets' , Boolean ( withDebugger ) ) ;
275
279
} ) ;
276
280
277
281
program
278
282
. command ( 'guides' )
279
283
. description ( 'Generate the guides' )
280
284
. addArgument ( args . language )
281
285
. addArgument ( args . clients )
282
- . option ( flags . verbose . flag , flags . verbose . description )
283
- . action ( async ( langArg : LangArg , clientArg : string [ ] , { verbose } ) => {
286
+ . addOption ( flags . verbose )
287
+ . addOption ( flags . debugger )
288
+ . action ( async ( langArg : LangArg , clientArg : string [ ] , { verbose, debugger : withDebugger } ) => {
284
289
const { language, client, clientList } = transformSelection ( {
285
290
langArg,
286
291
clientArg,
@@ -293,13 +298,14 @@ program
293
298
existsSync ( toAbsolutePath ( `templates/${ gen . language } /guides/${ gen . client } ` ) ) ,
294
299
) ,
295
300
'guides' ,
301
+ Boolean ( withDebugger ) ,
296
302
) ;
297
303
} ) ;
298
304
299
305
program
300
306
. command ( 'release' )
301
307
. description ( 'Releases the client' )
302
- . option ( flags . verbose . flag , flags . verbose . description )
308
+ . addOption ( flags . verbose )
303
309
. option < semver . ReleaseType > (
304
310
'--rt --release-type <type>' ,
305
311
'triggers a release for the given language list with the given releaseType' ,
0 commit comments