Add author/homepage/license to version + banner; date format fixes
- globals.go: add Homepage and License constants.
- version command: show author, homepage, license, build date.
- Startup banner reformatted to:
vaultik X by Author (commit Y, built on Z) starting up at T.
https://sneak.berlin/go/vaultik
- Commit date now formatted as YYYY-MM-DD (called "build date" in
user-facing output, since the binary was at least compiled once on
the date of commit). Makefile/Dockerfile use git --format=%cs.
goreleaser slices its RFC3339 .CommitDate template var to 10 chars.
This commit is contained in:
@@ -22,7 +22,7 @@ builds:
|
|||||||
- -s -w
|
- -s -w
|
||||||
- -X 'sneak.berlin/go/vaultik/internal/globals.Version={{ .Version }}'
|
- -X 'sneak.berlin/go/vaultik/internal/globals.Version={{ .Version }}'
|
||||||
- -X 'sneak.berlin/go/vaultik/internal/globals.Commit={{ .Commit }}'
|
- -X 'sneak.berlin/go/vaultik/internal/globals.Commit={{ .Commit }}'
|
||||||
- -X 'sneak.berlin/go/vaultik/internal/globals.CommitDate={{ .CommitDate }}'
|
- -X 'sneak.berlin/go/vaultik/internal/globals.CommitDate={{ slice .CommitDate 0 10 }}'
|
||||||
|
|
||||||
archives:
|
archives:
|
||||||
- id: default
|
- id: default
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ COPY . .
|
|||||||
RUN make test
|
RUN make test
|
||||||
|
|
||||||
# Build (pure Go, no CGO required since we use modernc.org/sqlite)
|
# Build (pure Go, no CGO required since we use modernc.org/sqlite)
|
||||||
RUN CGO_ENABLED=0 go build -ldflags "-X 'sneak.berlin/go/vaultik/internal/globals.Version=${VERSION}' -X 'sneak.berlin/go/vaultik/internal/globals.Commit=$(git rev-parse HEAD 2>/dev/null || echo unknown)' -X 'sneak.berlin/go/vaultik/internal/globals.CommitDate=$(git show -s --format=%cI HEAD 2>/dev/null || echo unknown)'" -o /vaultik ./cmd/vaultik
|
RUN CGO_ENABLED=0 go build -ldflags "-X 'sneak.berlin/go/vaultik/internal/globals.Version=${VERSION}' -X 'sneak.berlin/go/vaultik/internal/globals.Commit=$(git rev-parse HEAD 2>/dev/null || echo unknown)' -X 'sneak.berlin/go/vaultik/internal/globals.CommitDate=$(git show -s --format=%cs HEAD 2>/dev/null || echo unknown)'" -o /vaultik ./cmd/vaultik
|
||||||
|
|
||||||
# Runtime stage
|
# Runtime stage
|
||||||
# alpine:3.21, 2026-02-25
|
# alpine:3.21, 2026-02-25
|
||||||
|
|||||||
2
Makefile
2
Makefile
@@ -5,7 +5,7 @@ VERSION := 1.0.0-rc.1
|
|||||||
|
|
||||||
# Build variables
|
# Build variables
|
||||||
GIT_REVISION := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown")
|
GIT_REVISION := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown")
|
||||||
GIT_COMMIT_DATE := $(shell git show -s --format=%cI HEAD 2>/dev/null || echo "unknown")
|
GIT_COMMIT_DATE := $(shell git show -s --format=%cs HEAD 2>/dev/null || echo "unknown")
|
||||||
|
|
||||||
# Linker flags
|
# Linker flags
|
||||||
LDFLAGS := -X 'sneak.berlin/go/vaultik/internal/globals.Version=$(VERSION)' \
|
LDFLAGS := -X 'sneak.berlin/go/vaultik/internal/globals.Version=$(VERSION)' \
|
||||||
|
|||||||
@@ -46,9 +46,11 @@ func setupGlobals(lc fx.Lifecycle, g *globals.Globals, v *vaultik.Vaultik, opts
|
|||||||
// user-facing output is suppressed.
|
// user-facing output is suppressed.
|
||||||
v.UI = ui.NewWithColor(io.Discard, false)
|
v.UI = ui.NewWithColor(io.Discard, false)
|
||||||
} else {
|
} else {
|
||||||
v.UI.Banner("%s %s (commit %s, %s) invoked at %s by %s",
|
v.UI.Banner("%s %s by %s (commit %s, built on %s) starting up at %s.",
|
||||||
g.Appname, g.Version, g.ShortCommit(), g.CommitDate,
|
g.Appname, g.Version, globals.Author,
|
||||||
g.StartTime.Format(time.RFC3339), globals.Author)
|
g.ShortCommit(), g.CommitDate,
|
||||||
|
g.StartTime.Format(time.RFC3339))
|
||||||
|
v.UI.Banner("%s", globals.Homepage)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -17,9 +17,13 @@ func NewVersionCommand() *cobra.Command {
|
|||||||
Args: cobra.NoArgs,
|
Args: cobra.NoArgs,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
fmt.Printf("vaultik %s\n", globals.Version)
|
fmt.Printf("vaultik %s\n", globals.Version)
|
||||||
fmt.Printf(" commit: %s\n", globals.Commit)
|
fmt.Printf(" commit: %s\n", globals.Commit)
|
||||||
fmt.Printf(" go: %s\n", runtime.Version())
|
fmt.Printf(" build date: %s\n", globals.CommitDate)
|
||||||
fmt.Printf(" os/arch: %s/%s\n", runtime.GOOS, runtime.GOARCH)
|
fmt.Printf(" go: %s\n", runtime.Version())
|
||||||
|
fmt.Printf(" os/arch: %s/%s\n", runtime.GOOS, runtime.GOARCH)
|
||||||
|
fmt.Printf(" author: %s\n", globals.Author)
|
||||||
|
fmt.Printf(" homepage: %s\n", globals.Homepage)
|
||||||
|
fmt.Printf(" license: %s\n", globals.License)
|
||||||
if globals.Version == "dev" {
|
if globals.Version == "dev" {
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
fmt.Println("This is a development build (no version information embedded).")
|
fmt.Println("This is a development build (no version information embedded).")
|
||||||
|
|||||||
@@ -19,6 +19,12 @@ var CommitDate string = "unknown"
|
|||||||
// Author identifies the upstream author of vaultik.
|
// Author identifies the upstream author of vaultik.
|
||||||
const Author = "Jeffrey Paul <sneak@sneak.berlin>"
|
const Author = "Jeffrey Paul <sneak@sneak.berlin>"
|
||||||
|
|
||||||
|
// Homepage is the canonical URL for vaultik.
|
||||||
|
const Homepage = "https://sneak.berlin/go/vaultik"
|
||||||
|
|
||||||
|
// License is the SPDX identifier for the project license.
|
||||||
|
const License = "MIT"
|
||||||
|
|
||||||
// Globals contains application-wide configuration and metadata.
|
// Globals contains application-wide configuration and metadata.
|
||||||
type Globals struct {
|
type Globals struct {
|
||||||
Appname string
|
Appname string
|
||||||
|
|||||||
Reference in New Issue
Block a user