detached 9cbef81

refactor: add pkg/version package and use build-time version in telemetry

Replace hardcoded "dev" version in telemetry provider with
version.Version() populated from ldflags at startup.
commit
9cbef81a5db1c51bb4d2448cc998711831654016
author
brice · · 2026-02-10 07:33 UTC
parent
9802b0a
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
3 files · +33 -2
M internal/app/run.go +4 -1
@@ -58,6 +58,9 @@ import (
5858 // Domain
5959 "github.com/bnema/gordon/internal/domain"
6060
61+ // Packages
62+ "github.com/bnema/gordon/pkg/version"
63+
6164 // Use cases
6265 "github.com/bnema/gordon/internal/usecase/auth"
6366 "github.com/bnema/gordon/internal/usecase/backup"
@@ -210,7 +213,7 @@ func Run(ctx context.Context, configPath string) error {
210213 ctx = zerowrap.WithCtx(ctx, log)
211214
212215 // Initialize OpenTelemetry
213- telProvider, telShutdown, err := telemetry.NewProvider(ctx, cfg.Telemetry, "gordon", "dev")
216+ telProvider, telShutdown, err := telemetry.NewProvider(ctx, cfg.Telemetry, "gordon", version.Version())
214217 if err != nil {
215218 log.Warn().Err(err).Msg("failed to initialize telemetry, continuing without it")
216219 } else {
@@ -58,6 +58,9 @@ import (
58 // Domain58 // Domain
59 "github.com/bnema/gordon/internal/domain"59 "github.com/bnema/gordon/internal/domain"
60 60
61+ // Packages
62+ "github.com/bnema/gordon/pkg/version"
63+
61 // Use cases64 // Use cases
62 "github.com/bnema/gordon/internal/usecase/auth"65 "github.com/bnema/gordon/internal/usecase/auth"
63 "github.com/bnema/gordon/internal/usecase/backup"66 "github.com/bnema/gordon/internal/usecase/backup"
@@ -210,7 +213,7 @@ func Run(ctx context.Context, configPath string) error {
210 ctx = zerowrap.WithCtx(ctx, log)213 ctx = zerowrap.WithCtx(ctx, log)
211 214
212 // Initialize OpenTelemetry215 // Initialize OpenTelemetry
213- telProvider, telShutdown, err := telemetry.NewProvider(ctx, cfg.Telemetry, "gordon", "dev")216+ telProvider, telShutdown, err := telemetry.NewProvider(ctx, cfg.Telemetry, "gordon", version.Version())
214 if err != nil {217 if err != nil {
215 log.Warn().Err(err).Msg("failed to initialize telemetry, continuing without it")218 log.Warn().Err(err).Msg("failed to initialize telemetry, continuing without it")
216 } else {219 } else {
M main.go +3 -1
@@ -4,6 +4,7 @@ import (
44 "os"
55
66 "github.com/bnema/gordon/internal/adapters/in/cli"
7+ versionpkg "github.com/bnema/gordon/pkg/version"
78 )
89
910 // Build information set by goreleaser via ldflags
@@ -14,7 +15,8 @@ var (
1415 )
1516
1617 func main() {
17- // Set version information for the CLI
18+ // Set version information globally and for the CLI
19+ versionpkg.Set(version, commit, date)
1820 cli.SetVersionInfo(version, commit, date)
1921
2022 if err := cli.NewRootCmd().Execute(); err != nil {
@@ -4,6 +4,7 @@ import (
4 "os"4 "os"
5 5
6 "github.com/bnema/gordon/internal/adapters/in/cli"6 "github.com/bnema/gordon/internal/adapters/in/cli"
7+ versionpkg "github.com/bnema/gordon/pkg/version"
7 )8 )
8 9
9 // Build information set by goreleaser via ldflags10 // Build information set by goreleaser via ldflags
@@ -14,7 +15,8 @@ var (
14 )15 )
15 16
16 func main() {17 func main() {
17- // Set version information for the CLI18+ // Set version information globally and for the CLI
19+ versionpkg.Set(version, commit, date)
18 cli.SetVersionInfo(version, commit, date)20 cli.SetVersionInfo(version, commit, date)
19 21
20 if err := cli.NewRootCmd().Execute(); err != nil {22 if err := cli.NewRootCmd().Execute(); err != nil {
A pkg/version/version.go +26 -0
@@ -0,0 +1,26 @@
1+// Package version holds build-time version info for Gordon.
2+// Set via main using Set(), read from anywhere via Get().
3+package version
4+
5+// Build information, populated by Set() at startup.
6+var (
7+ version = "dev"
8+ commit = "unknown"
9+ buildDate = "unknown"
10+)
11+
12+// Set stores build-time version info. Call once from main.
13+func Set(v, c, d string) {
14+ version = v
15+ commit = c
16+ buildDate = d
17+}
18+
19+// Version returns the build version string.
20+func Version() string { return version }
21+
22+// Commit returns the build commit hash.
23+func Commit() string { return commit }
24+
25+// BuildDate returns the build date string.
26+func BuildDate() string { return buildDate }
@@ -0,0 +1,26 @@
1+// Package version holds build-time version info for Gordon.
2+// Set via main using Set(), read from anywhere via Get().
3+package version
4+
5+// Build information, populated by Set() at startup.
6+var (
7+ version = "dev"
8+ commit = "unknown"
9+ buildDate = "unknown"
10+)
11+
12+// Set stores build-time version info. Call once from main.
13+func Set(v, c, d string) {
14+ version = v
15+ commit = c
16+ buildDate = d
17+}
18+
19+// Version returns the build version string.
20+func Version() string { return version }
21+
22+// Commit returns the build commit hash.
23+func Commit() string { return commit }
24+
25+// BuildDate returns the build date string.
26+func BuildDate() string { return buildDate }

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 7

Tags 106

↑↓ moveenter openesc close