From 037f59d0dffde531090c32b3c4676fca07c1ec11 Mon Sep 17 00:00:00 2001 From: Martin Hardorf Date: Thu, 23 Jul 2015 13:10:59 +0200 Subject: [PATCH] Add support for specifying configuration file in maven plugin --- .../swagger/codegen/plugin/CodeGenMojo.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/CodeGenMojo.java b/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/CodeGenMojo.java index 26b6fef1135..812be6981d4 100644 --- a/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/CodeGenMojo.java +++ b/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/CodeGenMojo.java @@ -16,12 +16,14 @@ * limitations under the License. */ +import io.swagger.codegen.CliOption; import io.swagger.codegen.ClientOptInput; import io.swagger.codegen.ClientOpts; import io.swagger.codegen.CodegenConfig; import io.swagger.codegen.DefaultGenerator; import io.swagger.models.Swagger; import io.swagger.parser.SwaggerParser; + import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.LifecyclePhase; @@ -29,6 +31,9 @@ import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; +import config.Config; +import config.ConfigParser; + import java.io.File; import java.util.ServiceLoader; @@ -66,6 +71,12 @@ public class CodeGenMojo extends AbstractMojo { @Parameter(name = "language", required = true) private String language; + /** + * Path to json configuration file. + */ + @Parameter(name = "configurationFile", required = false) + private String configurationFile; + /** * Add the output directory to the project as a source root, so that the @@ -90,7 +101,20 @@ public void execute() throws MojoExecutionException { if (null != templateDirectory) { config.additionalProperties().put(TEMPLATE_DIR_PARAM, templateDirectory.getAbsolutePath()); } - + + if (null != configurationFile) { + Config genConfig = ConfigParser.read(configurationFile); + if (null != genConfig) { + for (CliOption langCliOption : config.cliOptions()) { + if (genConfig.hasOption(langCliOption.getOpt())) { + config.additionalProperties().put(langCliOption.getOpt(), genConfig.getOption(langCliOption.getOpt())); + } + } + } else { + throw new RuntimeException("Unable to read configuration file"); + } + } + ClientOptInput input = new ClientOptInput().opts(new ClientOpts()).swagger(swagger); input.setConfig(config); new DefaultGenerator().opts(input).generate();