version.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package version // import "miniflux.app/v2/internal/version"
  4. import (
  5. "runtime/debug"
  6. )
  7. // Variables populated at build time when using LD_FLAGS.
  8. var (
  9. Version = ""
  10. Commit = ""
  11. BuildDate = ""
  12. )
  13. func getCommit() string {
  14. if info, ok := debug.ReadBuildInfo(); ok {
  15. for _, setting := range info.Settings {
  16. if setting.Key == "vcs.revision" {
  17. if len(setting.Value) >= 8 {
  18. return setting.Value[:8]
  19. }
  20. return setting.Value
  21. }
  22. }
  23. }
  24. return "Unknown (built outside VCS)"
  25. }
  26. func getBuildDate() string {
  27. if info, ok := debug.ReadBuildInfo(); ok {
  28. for _, setting := range info.Settings {
  29. if setting.Key == "vcs.time" {
  30. return setting.Value
  31. }
  32. }
  33. }
  34. return "Unknown (built outside VCS)"
  35. }
  36. // Populate build information from VCS metadata if LDFLAGS are not set.
  37. // Falls back to values from the Go module's build info when available.
  38. func init() {
  39. if Version == "" {
  40. // Some Miniflux clients expect a specific version format.
  41. // For example, Flux News converts the string version to an integer.
  42. Version = "2.2.x-dev"
  43. }
  44. if Commit == "" {
  45. Commit = getCommit()
  46. }
  47. if BuildDate == "" {
  48. BuildDate = getBuildDate()
  49. }
  50. }