planetiler/planetiler-core/src/main/java/com/onthegomap/planetiler/util/BuildInfo.java

46 wiersze
1.5 KiB
Java

package com.onthegomap.planetiler.util;
import com.onthegomap.planetiler.Planetiler;
import java.io.IOException;
import java.time.Instant;
import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Accessor for the build info inserted by maven into the {@code buildinfo.properties} file. */
public record BuildInfo(String githash, String version, Long buildTime) {
private static final Logger LOGGER = LoggerFactory.getLogger(BuildInfo.class);
private static final BuildInfo instance;
static {
BuildInfo result = null;
try (var properties = Planetiler.class.getResourceAsStream("/buildinfo.properties")) {
var parsed = new Properties();
parsed.load(properties);
String githash = parsed.getProperty("githash");
String version = parsed.getProperty("version");
String epochMs = parsed.getProperty("timestamp");
Long buildTime = null;
if (epochMs != null && !epochMs.isBlank() && epochMs.matches("^\\d+$")) {
buildTime = Long.parseLong(epochMs);
}
result = new BuildInfo(githash, version, buildTime);
} catch (IOException e) {
LOGGER.error("Error getting build properties");
}
instance = result;
}
public String buildTimeString() {
return buildTime == null ? null : Instant.ofEpochMilli(buildTime).toString();
}
/** Returns info inserted by maven at build-time into the {@code buildinfo.properties} file. */
public static BuildInfo get() {
return instance;
}
}