From 33436d62c3a50d3d5c0f56b938fdf6e2e2f36c7a Mon Sep 17 00:00:00 2001 From: hrachya Date: Tue, 26 May 2015 15:57:01 -0700 Subject: [PATCH] Get all cliOptions for available codegen configs and add to command line options Add all the specified ones to clientOpts properties --- .../com/wordnik/swagger/codegen/Codegen.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java index efda171ff82..1adcc792a8e 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java @@ -51,6 +51,30 @@ public class Codegen extends DefaultGenerator { options.addOption("d", "debug-info", false, "prints additional info for debugging"); options.addOption("a", "auth", true, "adds authorization headers when fetching the swagger definitions remotely. Pass in a URL-encoded string of name:header with a comma separating multiple values"); + //adding additional options from language specific configs + Option existingOption; + for (Map.Entry configEntry : configs.entrySet()) { + for (CliOption langCliOption : configEntry.getValue().cliOptions()) { + //lang specific option + if (langCliOption.isLangSpecific()) { + //option exists, update description + if (options.hasOption(langCliOption.getOpt())) { + existingOption = options.getOption(langCliOption.getOpt()); + existingOption.setDescription(existingOption.getDescription() + "\n" + configEntry.getKey() + ": " + langCliOption.getDescription()); + } else { + //new option, prepend 'lang: ' to the description and add + langCliOption.setDescription(configEntry.getKey() + ": " + langCliOption.getDescription()); + options.addOption((Option) langCliOption); + } + } else { + //not lang specific, add if not already there + if (!options.hasOption(langCliOption.getOpt())) { + options.addOption((Option) langCliOption); + } + } + } + } + ClientOptInput clientOptInput = new ClientOptInput(); ClientOpts clientOpts = new ClientOpts(); Swagger swagger = null; @@ -92,6 +116,13 @@ public class Codegen extends DefaultGenerator { swagger = new SwaggerParser().read(cmd.getOptionValue("i"), clientOptInput.getAuthorizationValues(), true); if (cmd.hasOption("t")) clientOpts.getProperties().put("templateDir", String.valueOf(cmd.getOptionValue("t"))); + + //add all passed cliOptions to clientOpts.properties + for (CliOption langCliOption : clientOptInput.getConfig().cliOptions()) { + if (cmd.hasOption(langCliOption.getOpt())) { + clientOpts.getProperties().put(langCliOption.getOpt(), String.valueOf(cmd.getOptionValue(langCliOption.getOpt()))); + } + } } catch (Exception e) { usage(options);