import java.time.LocalDateTime import java.time.format.DateTimeFormatter import java.nio.file.Path gradle.allprojects { ext.getCurrentVersion = { -> def stdout = new ByteArrayOutputStream() exec { commandLine 'git', 'describe', '--tags' standardOutput = stdout } String tagIsh = stdout.toString().trim().toLowerCase() println("Picked up version: " + tagIsh) return tagIsh } ext.versionString = getCurrentVersion() } task writeCurrentVersionJava { String date = DateTimeFormatter.ofPattern("yyyy-M-d hh:mm:ss").format(LocalDateTime.now()) File versionFile = new File(Path.of("$projectDir/src/main/java/org/photonvision/PhotonVersion.java").toAbsolutePath().toString()) versionFile.delete() boolean success = versionFile.createNewFile() versionFile << "package org.photonvision;\n" + "\n" + "/*\n" + " * Autogenerated file! Do not manually edit this file. This version is regenerated\n" + " * any time the publish task is run, or when this file is deleted.\n" + " */\n" + "\n" + "@SuppressWarnings(\"ALL\")\n" + "public final class PhotonVersion {\n" + " public static final String versionString = \"${versionString}\";\n" + " public static final String buildDate = \"${date}\";\n" + " public static final boolean isRelease = versionString.startsWith(\"dev\");\n" + "}" } build.dependsOn writeCurrentVersionJava