version.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package version
  2. import "strings"
  3. const version = "1.2.2-dev"
  4. var (
  5. commit = ""
  6. date = ""
  7. info Info
  8. )
  9. // Info defines version details
  10. type Info struct {
  11. Version string `json:"version"`
  12. BuildDate string `json:"build_date"`
  13. CommitHash string `json:"commit_hash"`
  14. Features []string `json:"features"`
  15. }
  16. // GetAsString returns the string representation of the version
  17. func GetAsString() string {
  18. var sb strings.Builder
  19. sb.WriteString(info.Version)
  20. if len(info.CommitHash) > 0 {
  21. sb.WriteString("-")
  22. sb.WriteString(info.CommitHash)
  23. }
  24. if len(info.BuildDate) > 0 {
  25. sb.WriteString("-")
  26. sb.WriteString(info.BuildDate)
  27. }
  28. if len(info.Features) > 0 {
  29. sb.WriteString(" ")
  30. sb.WriteString(strings.Join(info.Features, " "))
  31. }
  32. return sb.String()
  33. }
  34. func init() {
  35. info = Info{
  36. Version: version,
  37. CommitHash: commit,
  38. BuildDate: date,
  39. }
  40. }
  41. // AddFeature adds a feature description
  42. func AddFeature(feature string) {
  43. info.Features = append(info.Features, feature)
  44. }
  45. // Get returns the Info struct
  46. func Get() Info {
  47. return info
  48. }