Skip to content

Commit 6253a59

Browse files
committed
added optional support for apis, supoprtingFiles
1 parent 9f842a1 commit 6253a59

File tree

1 file changed

+89
-38
lines changed

1 file changed

+89
-38
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java

Lines changed: 89 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -51,21 +51,52 @@ public Generator opts(ClientOptInput opts) {
5151

5252
@Override
5353
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;
5757

5858
Set<String> modelsToGenerate = null;
59+
Set<String> apisToGenerate = null;
60+
Set<String> supportingFilesToGenerate = null;
5961

6062
// allows generating only models by specifying a CSV of models to generate, or empty for all
6163
if(System.getProperty("models") != null) {
62-
generateApis = false;
63-
generateSupportingFiles = false;
6464
String modelNames = System.getProperty("models");
6565
if(!modelNames.isEmpty()) {
66+
generateModels = true;
6667
modelsToGenerate = new HashSet<String>(Arrays.asList(modelNames.split(",")));
6768
}
6869
}
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+
}
69100

70101
if (swagger == null || config == null) {
71102
throw new RuntimeException("missing swagger input or config!");
@@ -206,6 +237,15 @@ public Reader getTemplate(String name) {
206237
// apis
207238
Map<String, List<CodegenOperation>> paths = processPaths(swagger.getPaths());
208239
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+
}
209249
for (String tag : paths.keySet()) {
210250
try {
211251
List<CodegenOperation> ops = paths.get(tag);
@@ -318,46 +358,57 @@ public Reader getTemplate(String name) {
318358

319359
String templateFile = getFullTemplateFile(config, support.templateFile);
320360

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;
342365
}
343-
if (in == null) {
344-
in = this.getClass().getClassLoader().getResourceAsStream(getCPResourcePath(templateFile));
366+
else {
367+
shouldGenerate = false;
345368
}
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));
351385
} else {
386+
InputStream in = null;
387+
388+
try {
389+
in = new FileInputStream(templateFile);
390+
} catch (Exception e) {
391+
// continue
392+
}
352393
if (in == null) {
353-
System.out.println("can't open " + templateFile + " for input");
394+
in = this.getClass().getClassLoader().getResourceAsStream(getCPResourcePath(templateFile));
354395
}
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+
}
357408
}
358-
}
359409

360-
files.add(outputFile);
410+
files.add(outputFile);
411+
}
361412
}
362413
} catch (Exception e) {
363414
throw new RuntimeException("Could not generate supporting file '" + support + "'", e);

0 commit comments

Comments
 (0)