fix(version): report the module version after go install - #5
Merged
Merged
Conversation
`go install github.com/lroolle/bwg-cli/cmd/bwg@latest` builds without the release ldflags, so `bwg version` printed "dev". Not cosmetic: the updater compares versions numerically, "dev" parses as 0.0.0, and every `bwg update --check` then announced an update that was already installed. Go records the module version in binaries built that way, so ask debug.ReadBuildInfo when the linker stamp is missing. A local `go build` still reports dev, because "(devel)" is not a version anyone can act on. Found by running the README's other install line end to end. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Third install path, third finding.
go install ...@latestworks — itpulled v0.2.0 from the proxy — but the binary reports:
The release ldflags are not there, so
main.versionkeeps its default.That is not cosmetic:
internal/updatercompares versions numerically,devparses as0.0.0, and everybwg update --checkfrom ago-installed binary announces an update that is already installed.
Go records the module version in binaries built that way, so
debug.ReadBuildInfo()answers it. A plain localgo buildstill saysdev, because(devel)is not a version anyone can act on.The decision is split into
resolveVersion(stamped, buildinfo, ok)soit can be tested without controlling how the test binary was built —
six cases including the pseudo-version
go install ...@mainproduces.cmd/bwghad no tests at all before this.🤖 Generated with Claude Code