check / check (push) Failing after 26s
Linting and testing become the lint and test phases of the Dockerfile, and the build stage depends on both. Dockerfile.lint, CHECK_EPOCH and the tests that checked them are removed. Every docker build in script/ passes --no-cache, and script/cibuild runs script/bootstrap first. A host without Go gets the go.mod version from script/install-go in .tool/go, which the Makefile, script/fmt, script/fmt-check and script/precommit add to PATH; fmt-check reads the Go files git lists. The image takes its version from the VERSION build arg or git describe, dev without .git. This repo's own entries follow the canonical content in .gitignore and .editorconfig. The golangci-lint v2.14.0 findings are fixed. The rules in CLAUDE.md move into AGENTS.md. IsDevVersion counts "unknown". Model: opus-5-5
104 lines
3.6 KiB
Go
104 lines
3.6 KiB
Go
// Package globals holds application-wide metadata (name, version,
|
|
// commit) that is populated at build time via linker flags.
|
|
package globals
|
|
|
|
import (
|
|
"regexp"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
// Appname is the application name, populated from main().
|
|
var Appname = "vaultik" //nolint:gochecknoglobals // set via -ldflags at build time
|
|
|
|
// DevVersion is the version a binary reports when it was built without
|
|
// git metadata: script/version emits it outside a git checkout, and an
|
|
// unstamped `go build` keeps it. goreleaser's snapshot template stamps
|
|
// it followed by "-" and the commit it was built from. It is
|
|
// deliberately not a number.
|
|
const DevVersion = "dev"
|
|
|
|
// Unknown is what Commit and CommitDate hold when the build did not
|
|
// stamp them, and the version script/docker and script/cibuild stamp
|
|
// when the host has no git checkout.
|
|
const Unknown = "unknown"
|
|
|
|
// Version is the application version, populated from main().
|
|
var Version = DevVersion //nolint:gochecknoglobals // set via -ldflags at build time
|
|
|
|
// Commit is the git commit hash, populated from main().
|
|
var Commit = Unknown //nolint:gochecknoglobals // set via -ldflags at build time
|
|
|
|
// CommitDate is the ISO-8601 date of the commit, populated from main().
|
|
var CommitDate = Unknown //nolint:gochecknoglobals // set via -ldflags at build time
|
|
|
|
// Author identifies the upstream author of vaultik.
|
|
const Author = "Jeffrey Paul <sneak@sneak.berlin>"
|
|
|
|
// Homepage is the canonical URL for vaultik.
|
|
const Homepage = "https://sneak.berlin/go/vaultik"
|
|
|
|
// ReleasesURL is where tagged release artifacts are published.
|
|
const ReleasesURL = "https://git.eeqj.de/sneak/vaultik/releases"
|
|
|
|
// License is the SPDX identifier for the project license.
|
|
const License = "MIT"
|
|
|
|
// Globals contains application-wide configuration and metadata.
|
|
type Globals struct {
|
|
Appname string
|
|
Version string
|
|
Commit string
|
|
CommitDate string
|
|
StartTime time.Time
|
|
}
|
|
|
|
// New creates and returns a new Globals instance initialized with the
|
|
// package-level variables.
|
|
func New() (*Globals, error) {
|
|
return &Globals{
|
|
Appname: Appname,
|
|
Version: Version,
|
|
Commit: Commit,
|
|
CommitDate: CommitDate,
|
|
}, nil
|
|
}
|
|
|
|
// IsDevVersion reports whether v names a development build rather than
|
|
// a release. "dev" and goreleaser's snapshot "dev-<sha>" count, and so
|
|
// does what `git describe --tags --always --dirty` gives a make or
|
|
// docker build of an untagged commit: the bare short commit, or
|
|
// tag-N-gHASH on a commit after a tag. Any version ending in "-dirty"
|
|
// counts, a modified checkout of a tag ("v1.0.0-dirty") included.
|
|
// A plain tag such as "v1.0.0" or "1.0.0" is a release.
|
|
//
|
|
// The empty string counts too. Nothing that knows its version reports
|
|
// no version, so an empty Version means the stamping failed, and the
|
|
// safe reading of "we could not establish that this is a release" is
|
|
// that it is not one. The Makefile refuses to build at all in that
|
|
// case; this is the second line of defence, for a binary linked by
|
|
// something other than the Makefile. Unknown counts for the same
|
|
// reason.
|
|
func IsDevVersion(v string) bool {
|
|
if v == "" || v == Unknown || v == DevVersion ||
|
|
strings.HasPrefix(v, DevVersion+"-") ||
|
|
strings.HasSuffix(v, "-dirty") {
|
|
return true
|
|
}
|
|
|
|
return regexp.MustCompile(`^(.+-[0-9]+-g)?[0-9a-f]+$`).MatchString(v)
|
|
}
|
|
|
|
// shortCommitLen is the number of commit-hash characters ShortCommit keeps.
|
|
const shortCommitLen = 12
|
|
|
|
// ShortCommit returns the first 12 chars of the commit hash, or the
|
|
// whole string if it's shorter (e.g. "unknown").
|
|
func (g *Globals) ShortCommit() string {
|
|
if len(g.Commit) > shortCommitLen {
|
|
return g.Commit[:shortCommitLen]
|
|
}
|
|
|
|
return g.Commit
|
|
}
|