import java.time.LocalDateTime import java.time.format.DateTimeFormatter import java.nio.file.Path gradle.allprojects { ext.getCurrentVersion = { -> def stdout = new ByteArrayOutputStream() String tagIsh try { exec { commandLine 'git', 'describe', '--tags' standardOutput = stdout } tagIsh = stdout.toString().trim().toLowerCase() } catch(Exception e) { tagIsh = "dev-Unknown" } boolean isDev = tagIsh.matches(".*-[0-9]*-g[0-9a-f]*") if(isDev) tagIsh = "dev-" + tagIsh 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