1
0

version.go 855 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package main
  2. import "runtime/debug"
  3. // version is set at build time by release builds and build.cmd:
  4. //
  5. // go build -ldflags "-X main.version=v1.0.0" ./cmd/rekopub
  6. var version string
  7. // versionString reports the version: the one set at build time, else the
  8. // module version for "go install ...@v1.0.0", else the git commit the
  9. // binary was built from.
  10. func versionString() string {
  11. if version != "" {
  12. return version
  13. }
  14. info, ok := debug.ReadBuildInfo()
  15. if !ok {
  16. return "unknown"
  17. }
  18. if v := info.Main.Version; v != "" && v != "(devel)" {
  19. return v
  20. }
  21. var rev, modified string
  22. for _, s := range info.Settings {
  23. switch s.Key {
  24. case "vcs.revision":
  25. rev = s.Value
  26. case "vcs.modified":
  27. if s.Value == "true" {
  28. modified = "-dirty"
  29. }
  30. }
  31. }
  32. if rev == "" {
  33. return "dev"
  34. }
  35. return "dev-" + rev[:min(len(rev), 12)] + modified
  36. }