From 820f3d4d6f4f45fe60fe13aab0b95578bb376d4f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= <sebastian@mobanisto.de>
Date: Sat, 8 Jan 2022 15:57:15 +0100
Subject: [PATCH] Make git branch available in BuildData, too

---
 .../GenerateBuildDataSourceTask.java          | 30 ++++++++++++++++---
 .../org/briarproject/briar/desktop/Main.kt    |  6 ++--
 2 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/buildSrc/src/main/java/org/briarproject/briar/desktop/builddata/GenerateBuildDataSourceTask.java b/buildSrc/src/main/java/org/briarproject/briar/desktop/builddata/GenerateBuildDataSourceTask.java
index 0dc1deacf6..51093d24da 100644
--- a/buildSrc/src/main/java/org/briarproject/briar/desktop/builddata/GenerateBuildDataSourceTask.java
+++ b/buildSrc/src/main/java/org/briarproject/briar/desktop/builddata/GenerateBuildDataSourceTask.java
@@ -43,7 +43,7 @@ public class GenerateBuildDataSourceTask extends AbstractBuildDataTask {
 		String version = project.getVersion().toString();
 
 		/*
-		 * Get Git hash and last commit time using JGit
+		 * Get Git hash, last commit time and current branch using JGit
 		 */
 		// Open git repository
 		File dir = project.getProjectDir();
@@ -65,8 +65,21 @@ public class GenerateBuildDataSourceTask extends AbstractBuildDataTask {
 		// Convert from seconds to milliseconds
 		long commitTime = first.getCommitTime() * 1000L;
 
+		// Get current branch, if any
+		String gitBranch = "<unknown>";
+		String prefix = "refs/heads/";
+		String fullBranch = repository.getFullBranch();
+		if (fullBranch.startsWith(prefix)) {
+			gitBranch = fullBranch.substring(prefix.length());
+		}
+
+		/*
+		 * Generate output file
+		 */
+
 		if (packageName == null) {
-			throw new IllegalStateException("Please specify 'packageName'.");
+			throw new IllegalStateException(
+					"Please specify 'packageName'.");
 		}
 
 		String[] parts = packageName.split("\\.");
@@ -83,7 +96,7 @@ public class GenerateBuildDataSourceTask extends AbstractBuildDataTask {
 		Path file = path.resolve(className + ".java");
 
 		String content = createSource(packageName, className, version,
-				commitTime, gitHash);
+				commitTime, gitHash, gitBranch);
 
 		InputStream in = new ByteArrayInputStream(
 				content.getBytes(StandardCharsets.UTF_8));
@@ -101,7 +114,7 @@ public class GenerateBuildDataSourceTask extends AbstractBuildDataTask {
 	}
 
 	private String createSource(String packageName, String className,
-			String version, long gitTime, String gitHash) {
+			String version, long gitTime, String gitHash, String gitBranch) {
 		FileBuilder buffer = new FileBuilder();
 		// // this file is generated, do not edit
 		// package org.briarproject.briar.desktop;
@@ -118,12 +131,14 @@ public class GenerateBuildDataSourceTask extends AbstractBuildDataTask {
 		buffer.line("    public static String getVersion() {");
 		buffer.line("        return \"" + version + "\";");
 		buffer.line("    }");
+		buffer.line();
 		// public static long getGitTime() {
 		//		return 1641645802088L;
 		// }
 		buffer.line("    public static long getGitTime() {");
 		buffer.line("        return " + gitTime + "L;");
 		buffer.line("    }");
+		buffer.line();
 		// public static long getGitHash() {
 		//		return "749dda081c3e7862050255817bc239b9255b1582";
 		// }
@@ -131,6 +146,13 @@ public class GenerateBuildDataSourceTask extends AbstractBuildDataTask {
 		buffer.line("        return \"" + gitHash + "\";");
 		buffer.line("    }");
 		buffer.line();
+		// public static String getGitBranch() {
+		//		return "master";
+		// }
+		buffer.line("    public static String getGitBranch() {");
+		buffer.line("        return \"" + gitBranch + "\";");
+		buffer.line("    }");
+		buffer.line();
 		buffer.line("}");
 
 		return buffer.toString();
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/Main.kt b/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
index f697bceb49..5d6477c123 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
@@ -77,8 +77,10 @@ private class Main : CliktCommand(
         val buildTime = Instant.ofEpochMilli(BuildData.getGitTime()).atZone(ZoneId.systemDefault()).toLocalDateTime()
         val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
         LOG.info { "This is briar-desktop version ${BuildData.getVersion()}" }
-        LOG.info { "Built from Git hash ${BuildData.getGitHash()}" }
-        LOG.info { "Last commit time ${formatter.format(buildTime)}" }
+        LOG.info { "Build info:" }
+        LOG.info { "  Git hash ${BuildData.getGitHash()}" }
+        LOG.info { "  Commit time ${formatter.format(buildTime)}" }
+        LOG.info { "  Branch ${BuildData.getGitBranch()}" }
 
         val dataDir = getDataDir()
         val app =
-- 
GitLab