Determine application version by calling git describe

This commit is contained in:
Jonas Tobias Hopusch 2022-01-02 18:33:17 +01:00
parent fae31308e0
commit d09cd0f37e
Failed to generate hash of commit
3 changed files with 26 additions and 5 deletions

View file

@ -6,8 +6,17 @@ plugins {
id("com.github.johnrengelman.shadow") version "latest.release" id("com.github.johnrengelman.shadow") version "latest.release"
} }
fun versionBanner(): String {
val os = org.apache.commons.io.output.ByteArrayOutputStream()
project.exec {
commandLine = "git describe --always --dirty".split(" ")
standardOutput = os
}
return String(os.toByteArray()).trim()
}
group = "de.jotoho" group = "de.jotoho"
version = "0.1.1" version = versionBanner()
repositories { repositories {
// Use Maven Central for resolving dependencies. // Use Maven Central for resolving dependencies.

View file

@ -7,4 +7,4 @@
* in the user manual at https://docs.gradle.org/7.2/userguide/multi_project_builds.html * in the user manual at https://docs.gradle.org/7.2/userguide/multi_project_builds.html
*/ */
rootProject.name = "de.jotoho.waituntil" rootProject.name = "waituntil"

View file

@ -1,6 +1,7 @@
package de.jotoho.waituntil; package de.jotoho.waituntil;
import java.util.*; import java.util.HashSet;
import java.util.Map;
import static de.jotoho.waituntil.GlobalConf.applicationOutputLanguage; import static de.jotoho.waituntil.GlobalConf.applicationOutputLanguage;
@ -35,8 +36,19 @@ public final class Main {
} }
} else if (options.contains("version")) { } else if (options.contains("version")) {
final var thisPackage = Main.class.getPackage(); final var thisPackage = Main.class.getPackage();
final var appVersion = thisPackage.getImplementationVersion() != null ? thisPackage.getImplementationVersion() :"UNKNOWN"; final var appVersion = thisPackage.getImplementationVersion() != null
System.out.println("de.jotoho.waituntil version " + appVersion); ? thisPackage.getImplementationVersion()
: "version unknown";
System.out.println("waituntil " + appVersion);
System.out.println("""
This program is free software: you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.""");
} else if (words.size() == 1) { } else if (words.size() == 1) {
final var target = TimeCalculator.calculateAndAnnounceTargetTime(words.iterator().next()); final var target = TimeCalculator.calculateAndAnnounceTargetTime(words.iterator().next());
Sleep.waitUntilTimeStamp(target); Sleep.waitUntilTimeStamp(target);