diff --git a/.gitignore b/.gitignore index 18fc2b3035b..6433492c0f3 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ out/ *.iws classpath.txt version.properties +!modules/swagger-codegen-cli/src/main/resources/version.properties .project .classpath lib/* @@ -33,7 +34,7 @@ packages/ /target /generated-files -/nbactions.xml +nbactions.xml # scalatra samples/server-generator/scalatra/output diff --git a/modules/swagger-codegen-cli/pom.xml b/modules/swagger-codegen-cli/pom.xml index e484393bb14..6b56d5a6f56 100644 --- a/modules/swagger-codegen-cli/pom.xml +++ b/modules/swagger-codegen-cli/pom.xml @@ -18,6 +18,7 @@ src/main/resources + true logback.xml diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/SwaggerCodegen.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/SwaggerCodegen.java index 98c0b8c05b5..94b64be8d02 100644 --- a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/SwaggerCodegen.java +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/SwaggerCodegen.java @@ -6,6 +6,7 @@ import io.swagger.codegen.cmd.Generate; import io.swagger.codegen.cmd.Langs; import io.swagger.codegen.cmd.Meta; +import io.swagger.codegen.cmd.Version; /** * User: lanwen @@ -21,16 +22,20 @@ public class SwaggerCodegen { public static void main(String[] args) { + String version = Version.readVersionFromResources(); @SuppressWarnings("unchecked") Cli.CliBuilder builder = Cli.builder("swagger-codegen-cli") - .withDescription("Swagger code generator CLI. More info on swagger.io") + .withDescription(String.format( + "Swagger code generator CLI (version %s). More info on swagger.io", + version)) .withDefaultCommand(Langs.class) .withCommands( Generate.class, Meta.class, Langs.class, Help.class, - ConfigHelp.class + ConfigHelp.class, + Version.class ); builder.build().parse(args).run(); diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java index c2dffbe6200..3b5d71eec9f 100644 --- a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java @@ -68,12 +68,8 @@ public void run() { "src/main/resources/META-INF/services", "io.swagger.codegen.CodegenConfig") ); - String swaggerVersion = this.getClass().getPackage().getImplementationVersion(); - // if the code is running outside of the jar (i.e. from the IDE), it will not have the version available. - // let's default it with something. - if (swaggerVersion==null) { - swaggerVersion = "2.1.3"; - } + String swaggerVersion = Version.readVersionFromResources(); + Map data = new ImmutableMap.Builder() .put("generatorPackage", targetPackage) .put("generatorClass", mainClass) diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Version.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Version.java new file mode 100644 index 00000000000..c39b54a30a3 --- /dev/null +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Version.java @@ -0,0 +1,45 @@ +package io.swagger.codegen.cmd; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +import io.airlift.airline.Command; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Command(name = "version", description = "Show version information") +public class Version implements Runnable { + + private static final Logger LOGGER = LoggerFactory.getLogger(Meta.class); + + private static final String VERSION_PLACEHOLDER = "${project.version}"; + + private static final String UNREADABLE_VERSION = "unreadable"; + private static final String UNSET_VERSION = "unset"; + private static final String UNKNOWN_VERSION = "unknown"; + + public static String readVersionFromResources() { + Properties versionProperties = new Properties(); + try (InputStream is = Version.class.getResourceAsStream("/version.properties")) { + versionProperties.load(is); + } catch (IOException ex) { + LOGGER.error("Error loading version properties", ex); + return UNREADABLE_VERSION; + } + + String version = versionProperties.getProperty("version", UNKNOWN_VERSION).trim(); + if (VERSION_PLACEHOLDER.equals(version)) { + return UNSET_VERSION; + } else { + return version; + } + } + + @Override + public void run() { + String version = readVersionFromResources(); + System.out.println(version); + } + +} diff --git a/modules/swagger-codegen-cli/src/main/resources/version.properties b/modules/swagger-codegen-cli/src/main/resources/version.properties new file mode 100644 index 00000000000..410af8cc687 --- /dev/null +++ b/modules/swagger-codegen-cli/src/main/resources/version.properties @@ -0,0 +1 @@ +version = ${project.version}