diff --git a/build.gradle b/build.gradle index 9fbe5642..fc4d9702 100644 --- a/build.gradle +++ b/build.gradle @@ -171,6 +171,25 @@ subprojects { required { signingRequired } sign publishing.publications.mavenJava } + + def generatedVersionDir = "${buildDir}/generated-version" + + sourceSets { + main { + output.dir(generatedVersionDir, builtBy: 'generateVersionProperties') + } + } + + task generateVersionProperties { + doLast { + def propertiesFile = file "$generatedVersionDir/version.properties" + propertiesFile.parentFile.mkdirs() + def properties = new Properties() + properties.setProperty("version", rootProject.version.toString()) + propertiesFile.withWriter { properties.store(it, null) } + } + } + processResources.dependsOn generateVersionProperties } def getAndroidRuntimeJar(androidSdkApiLevel) { diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/commands/Version.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/commands/Version.java index 8a5da78b..1aafa4a5 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/commands/Version.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/commands/Version.java @@ -15,15 +15,27 @@ */ package org.pgpainless.sop.commands; -import picocli.CommandLine; - import static org.pgpainless.sop.Print.print_ln; +import java.io.IOException; +import java.util.Properties; + +import picocli.CommandLine; + @CommandLine.Command(name = "version", description = "Display version information about the tool") public class Version implements Runnable { @Override public void run() { - print_ln("PGPainless CLI version 0.0.1"); + // See https://stackoverflow.com/a/50119235 + String version; + try { + Properties properties = new Properties(); + properties.load(getClass().getResourceAsStream("/version.properties")); + version = properties.getProperty("version"); + } catch (IOException e) { + version = "DEVELOPMENT"; + } + print_ln("PGPainlessCLI " + version); } }