check / check (push) Successful in 10m44s
A binary from go install, the README's first command, reported itself as version dev, a development build, although Go had recorded the tag it was built from. When the linker flags leave the version, commit or commit date unset, they are now filled in from the Go build info, so such a binary reports its tag and counts as a release. Builds through make, script/docker and goreleaser are unchanged. 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 "$@"
|