Setting variables in a package on build time
Posted on
Setting variables in a package on build time
When building a go binary its possible to add ldflags in order to variables in build time (Like version numbers) and this is pretty well documented. But setting variables in internal/vendoring directories it not well documented.
This is how its done
test # tree
.
├── cmd
│ └── cli
│ └── main.go
├── internal
│ └── cmd
│ └── version.go
test/cmd/cli/main.go
package main
import "fmt"
import "test/internal/cmd"
func main() {
fmt.Printf("Version: %s\n", cmd.Getversion())
}
test/internal/cmd/version.go
package cmd
var version = "Not set"
func Getversion() string {
return version
}
This has to be done with full path like
# go build -ldflags "-X test/internal/cmd.version=1.0.0-0529a3e" -o test ./cmd/cli/*.go
# ./test
Version: 1.0.0-0529a3e