From a1fd3868bf2b902cf4588ab1e37aef8aa93cdeb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20Garci=CC=81a=20L=C3=B3pez?= Date: Thu, 29 Sep 2016 11:05:17 +0200 Subject: [PATCH 1/3] Properly git-ignore all nbactions.xml files. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 18fc2b3035b..b0ce2e6f685 100644 --- a/.gitignore +++ b/.gitignore @@ -33,7 +33,7 @@ packages/ /target /generated-files -/nbactions.xml +nbactions.xml # scalatra samples/server-generator/scalatra/output From 313d01e7d64cf82640eda5f4eeb1a6ad3d2097e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20Garci=CC=81a=20L=C3=B3pez?= Date: Thu, 29 Sep 2016 11:18:16 +0200 Subject: [PATCH 2/3] Add a command line action to print the program version (#3892). I am using maven resource filtering capabilities so that an existing version.properties resource file gets filtered upon build and populated with the project version tag. This resource is then read at runtime as required. --- .gitignore | 1 + modules/swagger-codegen-cli/pom.xml | 1 + .../io/swagger/codegen/SwaggerCodegen.java | 9 +++- .../java/io/swagger/codegen/cmd/Meta.java | 8 +--- .../java/io/swagger/codegen/cmd/Version.java | 45 +++++++++++++++++++ .../src/main/resources/version.properties | 1 + 6 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Version.java create mode 100644 modules/swagger-codegen-cli/src/main/resources/version.properties diff --git a/.gitignore b/.gitignore index b0ce2e6f685..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/* 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..60c908d446b --- /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 = "unset"; + 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} From d21abefb663a0e78ea66a861b6f2122dadc953b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20Garci=CC=81a=20L=C3=B3pez?= Date: Thu, 29 Sep 2016 11:26:50 +0200 Subject: [PATCH 3/3] Using a different version tag when unreadable. --- .../src/main/java/io/swagger/codegen/cmd/Version.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 60c908d446b..c39b54a30a3 100644 --- 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 @@ -15,7 +15,7 @@ public class Version implements Runnable { private static final String VERSION_PLACEHOLDER = "${project.version}"; - private static final String UNREADABLE_VERSION = "unset"; + private static final String UNREADABLE_VERSION = "unreadable"; private static final String UNSET_VERSION = "unset"; private static final String UNKNOWN_VERSION = "unknown";