# HG changeset patch
# User Christophe de Vienne <christophe@cdevienne.info>
# Date 1732549449 -3600
#      Mon Nov 25 16:44:09 2024 +0100
# Node ID 4be74723ba6326f450a33c7b1e7305b2f158be76
# Parent  c26b7fd68dd753795a6f1f0920ac64c02cfeb824
build_version_file: fix a crash when no active topic

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
@@ -1,6 +1,7 @@
 package main
 
 import (
+	"errors"
 	"fmt"
 	"os"
 	"os/exec"
@@ -8,13 +9,9 @@
 	"text/template"
 )
 
-func syscmd(name string, arg ...string) string {
+func sysCmd(name string, arg ...string) (string, error) {
 	cmd := exec.Command(name, arg...)
 	out, err := cmd.CombinedOutput()
-	if err != nil {
-		fmt.Println(string(out))
-		panic(err)
-	}
 	splitted := strings.Split(string(out), "\n")
 	lines := make([]string, 0, len(splitted))
 	for _, l := range splitted {
@@ -26,10 +23,20 @@
 	}
 	if len(lines) != 1 {
 		fmt.Println(string(out))
-		panic("Expects a single line")
+
+		return "", errors.New("Expects a single line")
 	}
 
-	return lines[0]
+	return lines[0], err
+}
+
+func mustSysCmd(name string, arg ...string) string {
+	out, err := sysCmd(name, arg...)
+	if err != nil {
+		panic(err)
+	}
+
+	return out
 }
 
 func getVersionTag(tags string) string {
@@ -56,17 +63,19 @@
 `))
 
 func main() {
-	sha := syscmd("hg", "id", "--id")
-	curVersion := getVersionTag(syscmd("hg", "id", "--tags"))
-	lastVersion := getVersionTag(syscmd("hg", "id", "--tags", "-r", "limit(last(ancestors(.)&tag('re:v.*'))|.,1)"))
+	sha := mustSysCmd("hg", "id", "--id")
+	curVersion := getVersionTag(mustSysCmd("hg", "id", "--tags"))
+	lastVersion := getVersionTag(mustSysCmd("hg", "id", "--tags", "-r", "limit(last(ancestors(.)&tag('re:v.*'))|.,1)"))
 	modified := strings.HasSuffix(sha, "+")
 	jobID := os.Getenv("CI_JOB_ID")
 
-	topic := syscmd("hg", "topic", "--current")
+	topic, err := sysCmd("hg", "topic", "--current")
 	if topic == "no active topic" {
 		topic = ""
+	} else if err != nil {
+		panic(err)
 	}
-	branch := syscmd("hg", "id", "--branch")
+	branch := mustSysCmd("hg", "id", "--branch")
 
 	var version string