@@ -51,21 +51,52 @@ public Generator opts(ClientOptInput opts) {
51
51
52
52
@ Override
53
53
public List <File > generate () {
54
- boolean generateApis = true ;
55
- boolean generateModels = true ;
56
- boolean generateSupportingFiles = true ;
54
+ Boolean generateApis = null ;
55
+ Boolean generateModels = null ;
56
+ Boolean generateSupportingFiles = null ;
57
57
58
58
Set <String > modelsToGenerate = null ;
59
+ Set <String > apisToGenerate = null ;
60
+ Set <String > supportingFilesToGenerate = null ;
59
61
60
62
// allows generating only models by specifying a CSV of models to generate, or empty for all
61
63
if (System .getProperty ("models" ) != null ) {
62
- generateApis = false ;
63
- generateSupportingFiles = false ;
64
64
String modelNames = System .getProperty ("models" );
65
65
if (!modelNames .isEmpty ()) {
66
+ generateModels = true ;
66
67
modelsToGenerate = new HashSet <String >(Arrays .asList (modelNames .split ("," )));
67
68
}
68
69
}
70
+ if (System .getProperty ("apis" ) != null ) {
71
+ String apiNames = System .getProperty ("apis" );
72
+ if (!apiNames .isEmpty ()) {
73
+ generateApis = true ;
74
+ apisToGenerate = new HashSet <String >(Arrays .asList (apiNames .split ("," )));
75
+ }
76
+ }
77
+ if (System .getProperty ("supportingFiles" ) != null ) {
78
+ String supportingFiles = System .getProperty ("supportingFiles" );
79
+ if (!supportingFiles .isEmpty ()) {
80
+ generateSupportingFiles = true ;
81
+ supportingFilesToGenerate = new HashSet <String >(Arrays .asList (supportingFiles .split ("," )));
82
+ }
83
+ }
84
+
85
+ if (generateApis == null && apisToGenerate == null && supportingFilesToGenerate == null ) {
86
+ // no specifics are set, generate everything
87
+ generateApis = true ; generateModels = true ; generateSupportingFiles = true ;
88
+ }
89
+ else {
90
+ if (generateApis == null ) {
91
+ generateApis = false ;
92
+ }
93
+ if (generateModels == null ) {
94
+ generateModels = false ;
95
+ }
96
+ if (generateSupportingFiles == null ) {
97
+ generateSupportingFiles = false ;
98
+ }
99
+ }
69
100
70
101
if (swagger == null || config == null ) {
71
102
throw new RuntimeException ("missing swagger input or config!" );
@@ -206,6 +237,15 @@ public Reader getTemplate(String name) {
206
237
// apis
207
238
Map <String , List <CodegenOperation >> paths = processPaths (swagger .getPaths ());
208
239
if (generateApis ) {
240
+ if (apisToGenerate != null ) {
241
+ Map <String , List <CodegenOperation >> updatedPaths = new TreeMap <String , List <CodegenOperation >>();
242
+ for (String m : paths .keySet ()) {
243
+ if (apisToGenerate .contains (m )) {
244
+ updatedPaths .put (m , paths .get (m ));
245
+ }
246
+ }
247
+ paths = updatedPaths ;
248
+ }
209
249
for (String tag : paths .keySet ()) {
210
250
try {
211
251
List <CodegenOperation > ops = paths .get (tag );
@@ -318,46 +358,57 @@ public Reader getTemplate(String name) {
318
358
319
359
String templateFile = getFullTemplateFile (config , support .templateFile );
320
360
321
- if (templateFile .endsWith ("mustache" )) {
322
- String template = readTemplate (templateFile );
323
- Template tmpl = Mustache .compiler ()
324
- .withLoader (new Mustache .TemplateLoader () {
325
- @ Override
326
- public Reader getTemplate (String name ) {
327
- return getTemplateReader (config .templateDir () + File .separator + name + ".mustache" );
328
- }
329
- })
330
- .defaultValue ("" )
331
- .compile (template );
332
-
333
- writeToFile (outputFilename , tmpl .execute (bundle ));
334
- files .add (new File (outputFilename ));
335
- } else {
336
- InputStream in = null ;
337
-
338
- try {
339
- in = new FileInputStream (templateFile );
340
- } catch (Exception e ) {
341
- // continue
361
+ boolean shouldGenerate = true ;
362
+ if (supportingFilesToGenerate != null ) {
363
+ if (supportingFilesToGenerate .contains (support .destinationFilename )) {
364
+ shouldGenerate = true ;
342
365
}
343
- if ( in == null ) {
344
- in = this . getClass (). getClassLoader (). getResourceAsStream ( getCPResourcePath ( templateFile )) ;
366
+ else {
367
+ shouldGenerate = false ;
345
368
}
346
- File outputFile = new File (outputFilename );
347
- OutputStream out = new FileOutputStream (outputFile , false );
348
- if (in != null && out != null ) {
349
- System .out .println ("writing file " + outputFile );
350
- IOUtils .copy (in , out );
369
+ }
370
+ if (shouldGenerate ) {
371
+ if (templateFile .endsWith ("mustache" )) {
372
+ String template = readTemplate (templateFile );
373
+ Template tmpl = Mustache .compiler ()
374
+ .withLoader (new Mustache .TemplateLoader () {
375
+ @ Override
376
+ public Reader getTemplate (String name ) {
377
+ return getTemplateReader (config .templateDir () + File .separator + name + ".mustache" );
378
+ }
379
+ })
380
+ .defaultValue ("" )
381
+ .compile (template );
382
+
383
+ writeToFile (outputFilename , tmpl .execute (bundle ));
384
+ files .add (new File (outputFilename ));
351
385
} else {
386
+ InputStream in = null ;
387
+
388
+ try {
389
+ in = new FileInputStream (templateFile );
390
+ } catch (Exception e ) {
391
+ // continue
392
+ }
352
393
if (in == null ) {
353
- System . out . println ( "can't open " + templateFile + " for input" );
394
+ in = this . getClass (). getClassLoader (). getResourceAsStream ( getCPResourcePath ( templateFile ) );
354
395
}
355
- if (out == null ) {
356
- System .out .println ("can't open " + outputFile + " for output" );
396
+ File outputFile = new File (outputFilename );
397
+ OutputStream out = new FileOutputStream (outputFile , false );
398
+ if (in != null && out != null ) {
399
+ System .out .println ("writing file " + outputFile );
400
+ IOUtils .copy (in , out );
401
+ } else {
402
+ if (in == null ) {
403
+ System .out .println ("can't open " + templateFile + " for input" );
404
+ }
405
+ if (out == null ) {
406
+ System .out .println ("can't open " + outputFile + " for output" );
407
+ }
357
408
}
358
- }
359
409
360
- files .add (outputFile );
410
+ files .add (outputFile );
411
+ }
361
412
}
362
413
} catch (Exception e ) {
363
414
throw new RuntimeException ("Could not generate supporting file '" + support + "'" , e );
0 commit comments