fix: local builds are dev-<commit> again, not a Go pseudo-version
CI / Checks (pull_request) Successful in 36s
PR title / Conventional title (pull_request) Successful in 0s

This commit is contained in:
keb authored and Karl-Einar Bergstrøm committed 2026-10-14 21:22:19 +02:00
1 parent 4480e8fed0
commit 06e1ab7714
2 files changed
+42 -2

No files matched your search

+20 -2
View File
@@ -1,6 +1,10 @@
package main
import "runtime/debug"
import (
"regexp"
"runtime/debug"
"strings"
)
// version is set by release builds:
//
@@ -8,7 +12,12 @@ import "runtime/debug"
var version string
// versionString is the release version, or for other builds what Go
// recorded: the module version (go install …@v1.2.3), else the commit.
// recorded: the module version (go install …@v1.2.3), else the commit
// (dev-c1a4f90, -dirty with changes not committed).
// pseudo matches a Go pseudo-version (v0.1.3-0.20261014174204-1c31a75d0507,
// maybe +dirty): its commit.
var pseudo = regexp.MustCompile(`[-.]\d{14}-([0-9a-f]{12})(\+.*)?$`)
func versionString() string {
if version != "" {
return version
@@ -18,6 +27,15 @@ func versionString() string {
return "dev"
}
if v := bi.Main.Version; v != "" && v != "(devel)" {
// A commit, not a release: a local build (Go stamps those too) or
// go install …@<commit>.
if m := pseudo.FindStringSubmatch(v); m != nil {
dirty := ""
if strings.HasSuffix(v, "+dirty") {
dirty = "-dirty"
}
return "dev-" + m[1][:7] + dirty
}
return v
}
var rev, dirty string
+22
View File
@@ -0,0 +1,22 @@
package main
import "testing"
func TestPseudoVersions(t *testing.T) {
for v, want := range map[string]string{
"v0.1.3-0.20261014174204-1c31a75d0507": "1c31a75d0507",
"v0.1.3-0.20261014174204-1c31a75d0507+dirty": "1c31a75d0507",
"v0.0.0-20261014174204-1c31a75d0507": "1c31a75d0507",
"v0.2.0-rc.1.0.20261014174204-1c31a75d0507": "1c31a75d0507",
"v0.1.2": "",
"v0.2.0-rc.1": "",
} {
got := ""
if m := pseudo.FindStringSubmatch(v); m != nil {
got = m[1]
}
if got != want {
t.Errorf("%s: %q, want %q", v, got, want)
}
}
}