kopia lustrzana https://github.com/onthegomap/planetiler
46 wiersze
1.5 KiB
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;
|
|
}
|
|
}
|