From dbecb9e562cd489c98e2fc223a4a6902181568a5 Mon Sep 17 00:00:00 2001 From: Fredric Dorothy Date: Mon, 28 Sep 2015 11:50:08 -0500 Subject: [PATCH] Added ability to set a configuration file for custom code generators. This should work the same as when you're using one of the built-in generators. --- .../main/java/io/swagger/codegen/Codegen.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/Codegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/Codegen.java index c99e04e5494..3b4ffecfe38 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/Codegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/Codegen.java @@ -1,5 +1,7 @@ package io.swagger.codegen; +import config.Config; +import config.ConfigParser; import io.swagger.models.Swagger; import io.swagger.parser.SwaggerParser; import org.apache.commons.cli.BasicParser; @@ -9,6 +11,7 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -41,6 +44,7 @@ public class Codegen extends DefaultGenerator { options.addOption("t", "template-dir", true, "folder containing the template files"); 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"); + options.addOption("c", "config", true, "location of the configuration file"); ClientOptInput clientOptInput = new ClientOptInput(); ClientOpts clientOpts = new ClientOpts(); @@ -84,6 +88,18 @@ public class Codegen extends DefaultGenerator { if (cmd.hasOption("i")) { swagger = new SwaggerParser().read(cmd.getOptionValue("i"), clientOptInput.getAuthorizationValues(), true); } + if (cmd.hasOption("c")) { + String configFile = cmd.getOptionValue("c"); + Config genConfig = ConfigParser.read(configFile); + config = clientOptInput.getConfig(); + if (null != genConfig && null != config) { + for (CliOption langCliOption : config.cliOptions()) { + if (genConfig.hasOption(langCliOption.getOpt())) { + config.additionalProperties().put(langCliOption.getOpt(), genConfig.getOption(langCliOption.getOpt())); + } + } + } + } if (cmd.hasOption("t")) { clientOpts.getProperties().put("templateDir", String.valueOf(cmd.getOptionValue("t"))); } @@ -145,4 +161,4 @@ public class Codegen extends DefaultGenerator { configString = sb.toString(); } } -} \ No newline at end of file +}