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..9a5fe8ed85f 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 @@ -1,11 +1,14 @@ package io.swagger.codegen; +import static io.swagger.codegen.cmd.Version.UNKNOWN_VERSION; + import io.airlift.airline.Cli; import io.airlift.airline.Help; import io.swagger.codegen.cmd.ConfigHelp; 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 +24,20 @@ public class SwaggerCodegen { public static void main(String[] args) { + String version = Version.readVersionFromResources().or(UNKNOWN_VERSION); @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..e67d596114c 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 @@ -2,6 +2,7 @@ import ch.lambdaj.function.convert.Converter; import com.google.common.base.CaseFormat; +import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.samskivert.mustache.Mustache; @@ -21,6 +22,7 @@ import static ch.lambdaj.collection.LambdaCollections.with; import static com.google.common.base.Joiner.on; +import static io.swagger.codegen.cmd.Version.UNKNOWN_VERSION; /** * User: lanwen @@ -68,18 +70,14 @@ 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"; - } + Optional swaggerVersion = Version.readVersionFromResources(); + Map data = new ImmutableMap.Builder() .put("generatorPackage", targetPackage) .put("generatorClass", mainClass) .put("name", name) .put("fullyQualifiedGeneratorClass", targetPackage + "." + mainClass) - .put("swaggerCodegenVersion", swaggerVersion).build(); + .put("swaggerCodegenVersion", swaggerVersion.or(UNKNOWN_VERSION)).build(); with(supportingFiles).convert(processFiles(targetDir, data)); 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..6f3b4d4bc11 --- /dev/null +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Version.java @@ -0,0 +1,39 @@ +package io.swagger.codegen.cmd; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +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); + + public static final String UNKNOWN_VERSION = "unknown"; + + public static Optional 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 Optional.absent(); + } + String version = versionProperties.getProperty("version"); + return Optional.fromNullable(version); + } + + @Override + public void run() { + Optional version = readVersionFromResources(); + Preconditions.checkState(version.isPresent(), "Version properties missing 'version' entry"); + System.out.println(version.get()); + } + +} 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} diff --git a/samples/html/index.html b/samples/html/index.html index 18b6a2fa44c..7f5fbeaf5b3 100644 --- a/samples/html/index.html +++ b/samples/html/index.html @@ -665,9 +665,9 @@

Return type

Example data

Content-Type: application/json
{
-  "message" : "aeiou",
   "code" : 123,
-  "type" : "aeiou"
+  "type" : "aeiou",
+  "message" : "aeiou"
 }

Produces