From 6a893a47870a42d5f916020d126dbe76da849201 Mon Sep 17 00:00:00 2001 From: ttomasz <31594210+ttomasz@users.noreply.github.com> Date: Sat, 26 Nov 2022 12:59:13 +0100 Subject: [PATCH] Cli add version argument (#376) --- planetiler-core/pom.xml | 6 +++++ .../com/onthegomap/planetiler/Planetiler.java | 24 +++++++++++++++++++ .../src/main/resources/buildinfo.properties | 3 +++ pom.xml | 14 +++++++++++ 4 files changed, 47 insertions(+) create mode 100644 planetiler-core/src/main/resources/buildinfo.properties diff --git a/planetiler-core/pom.xml b/planetiler-core/pom.xml index 91bb1e69..d1cf5a3c 100644 --- a/planetiler-core/pom.xml +++ b/planetiler-core/pom.xml @@ -141,6 +141,12 @@ + + + src/main/resources + true + + src/test/resources diff --git a/planetiler-core/src/main/java/com/onthegomap/planetiler/Planetiler.java b/planetiler-core/src/main/java/com/onthegomap/planetiler/Planetiler.java index 6b283e34..e0c8c4df 100644 --- a/planetiler-core/src/main/java/com/onthegomap/planetiler/Planetiler.java +++ b/planetiler-core/src/main/java/com/onthegomap/planetiler/Planetiler.java @@ -25,10 +25,13 @@ import com.onthegomap.planetiler.util.ResourceUsage; import com.onthegomap.planetiler.util.Translations; import com.onthegomap.planetiler.util.Wikidata; import com.onthegomap.planetiler.worker.RunnableThatThrows; +import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.time.Instant; import java.util.ArrayList; import java.util.List; +import java.util.Properties; import java.util.function.Function; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -439,6 +442,11 @@ public class Planetiler { * @throws Exception if an error occurs while processing */ public void run() throws Exception { + var showVersion = arguments.getBoolean("version", "show version then exit", false); + printVersionInfoFromManifest(); + if (showVersion) { + System.exit(0); + } if (profile() == null) { throw new IllegalArgumentException("No profile specified"); } @@ -543,6 +551,22 @@ public class Planetiler { stats.close(); } + public static void printVersionInfoFromManifest() { + try (var properties = Planetiler.class.getResourceAsStream("/buildinfo.properties")) { + var parsed = new Properties(); + parsed.load(properties); + LOGGER.info("Planetiler build git hash: {}", parsed.getProperty("githash")); + LOGGER.info("Planetiler build version: {}", parsed.getProperty("version")); + var epochMs = parsed.getProperty("timestamp"); + if (epochMs != null && !epochMs.isBlank() && epochMs.matches("^\\d+$")) { + var time = Instant.ofEpochMilli(Long.parseLong(epochMs)); + LOGGER.info("Planetiler build timestamp: {}", time); + } + } catch (IOException e) { + LOGGER.error("Error getting build properties"); + } + } + private void checkDiskSpace() { ResourceUsage readPhase = new ResourceUsage("read phase disk"); ResourceUsage writePhase = new ResourceUsage("write phase disk"); diff --git a/planetiler-core/src/main/resources/buildinfo.properties b/planetiler-core/src/main/resources/buildinfo.properties new file mode 100644 index 00000000..02ece30e --- /dev/null +++ b/planetiler-core/src/main/resources/buildinfo.properties @@ -0,0 +1,3 @@ +githash=${buildNumber} +timestamp=${timestamp} +version=${revision} diff --git a/pom.xml b/pom.xml index 09ad618f..434faf6c 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,7 @@ ${project.artifactId} planetiler-benchmarks/**/*, planetiler-openmaptiles/**/* 0.6-SNAPSHOT + ${maven.build.timestamp} @@ -160,6 +161,19 @@ + + org.codehaus.mojo + buildnumber-maven-plugin + 3.0.0 + + + validate + + create + + + + com.diffplug.spotless spotless-maven-plugin