From f25a7575d3b68a2af8d17041a296a53e1016daa0 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Tue, 9 May 2017 04:59:48 -0400 Subject: [PATCH] [generator] Adds a .swagger/VERSION file for all generators (#5556) --- .../java/io/swagger/codegen/DefaultGenerator.java | 13 +++++++++++-- .../codegen/utils/ImplementationVersion.java | 13 +++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 modules/swagger-codegen/src/main/java/io/swagger/codegen/utils/ImplementationVersion.java diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index ea163bee42c..e182f03d61b 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -3,6 +3,7 @@ package io.swagger.codegen; import com.samskivert.mustache.Mustache; import com.samskivert.mustache.Template; import io.swagger.codegen.ignore.CodegenIgnoreProcessor; +import io.swagger.codegen.utils.ImplementationVersion; import io.swagger.models.*; import io.swagger.models.auth.OAuth2Definition; import io.swagger.models.auth.SecuritySchemeDefinition; @@ -126,8 +127,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { } config.processOpts(); config.preprocessSwagger(swagger); - // TODO need to obtain version from a file instead of hardcoding it - config.additionalProperties().put("generatorVersion", "2.2.3-SNAPSHOT"); + config.additionalProperties().put("generatorVersion", ImplementationVersion.read()); config.additionalProperties().put("generatedDate", DateTime.now().toString()); config.additionalProperties().put("generatorClass", config.getClass().getName()); config.additionalProperties().put("inputSpec", config.getInputSpec()); @@ -581,6 +581,15 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { files.add(ignoreFile); } + final String swaggerVersionMetadata = config.outputFolder() + File.separator + ".swagger" + File.separator + "VERSION"; + File swaggerVersionMetadataFile = new File(swaggerVersionMetadata); + try { + writeToFile(swaggerVersionMetadata, ImplementationVersion.read()); + files.add(swaggerVersionMetadataFile); + } catch (IOException e) { + throw new RuntimeException("Could not generate supporting file '" + swaggerVersionMetadata + "'", e); + } + /* * The following code adds default LICENSE (Apache-2.0) for all generators * To use license other than Apache2.0, update the following file: diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/utils/ImplementationVersion.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/utils/ImplementationVersion.java new file mode 100644 index 00000000000..7c04b065216 --- /dev/null +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/utils/ImplementationVersion.java @@ -0,0 +1,13 @@ +package io.swagger.codegen.utils; + +public class ImplementationVersion { + public static String read() { + // Assumes this version is required at runtime. This could be modified to use a properties file like the CLI. + String compiledVersion = ImplementationVersion.class.getPackage().getImplementationVersion(); + if(compiledVersion != null) { + return compiledVersion; + } + + return "unset"; + } +}