# HG changeset patch
# User Christophe de Vienne <christophe@cdevienne.info>
# Date 1731971236 -3600
#      Tue Nov 19 00:07:16 2024 +0100
# Node ID 06a165ffa439e8d3541b260f9dab4f38077ae6d0
# Parent  5a251df9bb98f7eb2ca1587c14f4b2480718a943
cmd/version: add topic&branch

diff --git a/cmd/program.go b/cmd/program.go
--- a/cmd/program.go
+++ b/cmd/program.go
@@ -143,6 +143,8 @@
 type Version struct {
 	Version string
 	Hash    string
+	Branch  string
+	HgTopic string
 	Build   string
 }
 
diff --git a/cmd/version.go b/cmd/version.go
--- a/cmd/version.go
+++ b/cmd/version.go
@@ -25,14 +25,19 @@
 }
 
 func (cmd *VersionCmd) Execute([]string) error {
-
 	versionLine := cmd.program.Version.Version
 	if cmd.Verbose {
 		if cmd.program.Version.Hash != "" {
-			versionLine += "\nHash:" + cmd.program.Version.Hash
+			versionLine += "\nHash: " + cmd.program.Version.Hash
+		}
+		if cmd.program.Version.HgTopic != "" {
+			versionLine += "\nTopic: " + cmd.program.Version.HgTopic
+		}
+		if cmd.program.Version.Branch != "" {
+			versionLine += "\nBranch: " + cmd.program.Version.Branch
 		}
 		if cmd.program.Version.Build != "" {
-			versionLine += "\nBuild:" + cmd.program.Version.Build
+			versionLine += "\nBuild: " + cmd.program.Version.Build
 		}
 	}
 	if _, err := fmt.Println(versionLine); err != nil {
diff --git a/tools/build_version_file/main.go b/tools/build_version_file/main.go
--- a/tools/build_version_file/main.go
+++ b/tools/build_version_file/main.go
@@ -42,6 +42,7 @@
 	if len(candidates) == 0 {
 		return ""
 	}
+
 	return candidates[0]
 }
 
@@ -49,6 +50,8 @@
 
 var Version = "{{ .version }}"
 var HgSha = "{{ .sha }}"
+var HgTopic = "{{ .topic }}"
+var HgBranch = "{{ .branch }}"
 var Build = "{{ .build }}"
 `))
 
@@ -59,6 +62,12 @@
 	modified := strings.HasSuffix(sha, "+")
 	jobID := os.Getenv("CI_JOB_ID")
 
+	topic := syscmd("hg", "topic", "--current")
+	if topic == "no active topic" {
+		topic = ""
+	}
+	branch := syscmd("hg", "id", "--branch")
+
 	var version string
 
 	switch {
@@ -77,6 +86,8 @@
 		"sha":     sha,
 		"version": version,
 		"build":   jobID,
+		"topic":   topic,
+		"branch":  branch,
 	}
 
 	out, err := os.Create("version.go")