check / check (push) Successful in 9m5s
A `go install` of a tag sets no linker flags, so the binary reported `dev`. Version, commit and commit date that the linker flags leave unset now come from the build info Go records. Go records a pseudo-version for an untagged commit and a `+dirty` suffix for a modified checkout; `IsDevVersion` now counts both as development builds, using `golang.org/x/mod`. Model: opus-5-5
29 lines
1.1 KiB
Bash
Executable File
29 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# script/version: output the version string to bake into the binary.
|
|
# Our own extension to scripts-to-rule-them-all. The Makefile's LDFLAGS
|
|
# call this rather than carrying a hardcoded constant, which is what used
|
|
# to make every local build claim to be 1.0.0-rc.1 regardless of git
|
|
# state. script/docker and script/cibuild run the same `git describe`
|
|
# themselves, and fall back to "unknown" rather than "dev".
|
|
#
|
|
# The version is `git describe --tags --always --dirty`: the tag on a
|
|
# tagged commit, tag-N-gHASH on a commit after one, the short commit
|
|
# when no tag is reachable, each with a "-dirty" suffix when tracked
|
|
# files have uncommitted changes. Untracked files are ignored: a stray
|
|
# scratch file does not change what was compiled. Outside a git checkout
|
|
# (such as an unpacked release tarball), or in one with no commits, it
|
|
# is "dev".
|
|
#
|
|
# Nothing here ever invents a version number.
|
|
set -eu
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
|
|
|
|
main() {
|
|
cd "$ROOT"
|
|
version="$(git describe --tags --always --dirty 2>/dev/null || true)"
|
|
echo "${version:-dev}"
|
|
}
|
|
|
|
main "$@"
|