srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/version/version.go30
-rw-r--r--internal/version/version_test.go32
2 files changed, 62 insertions, 0 deletions
diff --git a/internal/version/version.go b/internal/version/version.go
new file mode 100644
index 0000000..030bd4e
--- /dev/null
+++ b/internal/version/version.go
@@ -0,0 +1,30 @@
+// Package version holds build-time version information for both
+// binaries, set via -ldflags "-X mitmux/internal/version.Version=..."
+// (see the Makefile's release target). Defaults to "dev" for a plain
+// `go build` with no ldflags, so `-version` is never blank or
+// misleading about whether a given binary is a tagged release or a
+// local build.
+package version
+
+var (
+ Version = "dev"
+ Commit = ""
+ Date = ""
+)
+
+// String returns a one-line version summary for component ("mitmux" or
+// "mitmuxd"): "mitmux dev" for an untagged build, or
+// "mitmux 1.2.3 (abc1234, 2026-01-02)" once Commit/Date are set.
+func String(component string) string {
+ s := component + " " + Version
+ if Commit != "" || Date != "" {
+ s += " ("
+ s += Commit
+ if Commit != "" && Date != "" {
+ s += ", "
+ }
+ s += Date
+ s += ")"
+ }
+ return s
+}
diff --git a/internal/version/version_test.go b/internal/version/version_test.go
new file mode 100644
index 0000000..d2d501b
--- /dev/null
+++ b/internal/version/version_test.go
@@ -0,0 +1,32 @@
+package version
+
+import "testing"
+
+func TestStringDefault(t *testing.T) {
+ orig := Version
+ Version, Commit, Date = "dev", "", ""
+ defer func() { Version = orig }()
+ if got := String("mitmux"); got != "mitmux dev" {
+ t.Errorf("String(%q) = %q, want %q", "mitmux", got, "mitmux dev")
+ }
+}
+
+func TestStringWithCommitAndDate(t *testing.T) {
+ origV, origC, origD := Version, Commit, Date
+ Version, Commit, Date = "1.2.3", "abc1234", "2026-01-02"
+ defer func() { Version, Commit, Date = origV, origC, origD }()
+ want := "mitmuxd 1.2.3 (abc1234, 2026-01-02)"
+ if got := String("mitmuxd"); got != want {
+ t.Errorf("String(%q) = %q, want %q", "mitmuxd", got, want)
+ }
+}
+
+func TestStringCommitOnly(t *testing.T) {
+ origV, origC, origD := Version, Commit, Date
+ Version, Commit, Date = "1.2.3", "abc1234", ""
+ defer func() { Version, Commit, Date = origV, origC, origD }()
+ want := "mitmux 1.2.3 (abc1234)"
+ if got := String("mitmux"); got != want {
+ t.Errorf("String(%q) = %q, want %q", "mitmux", got, want)
+ }
+}