| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package version
- import (
- "fmt"
- "runtime/debug"
- "strings"
- )
- var (
- Version = "dev"
- Commit = "unknown"
- Date = "unknown"
- Dirty = ""
- )
- func init() {
- info, ok := debug.ReadBuildInfo()
- if !ok {
- return
- }
- for _, setting := range info.Settings {
- switch setting.Key {
- case "vcs.revision":
- if Commit == "unknown" && setting.Value != "" {
- Commit = shortCommit(setting.Value)
- }
- case "vcs.time":
- if Date == "unknown" && setting.Value != "" {
- Date = setting.Value
- }
- case "vcs.modified":
- if setting.Value == "true" {
- Dirty = "-dirty"
- }
- }
- }
- }
- func shortCommit(commit string) string {
- if len(commit) > 12 {
- return commit[:12]
- }
- return commit
- }
- func String() string {
- v := Version
- if v == "" || v == "dev" {
- v = Commit
- }
- if v == "" || v == "unknown" {
- v = "dev"
- }
- if Dirty != "" && !strings.HasSuffix(v, Dirty) {
- v += Dirty
- }
- if Date == "" || Date == "unknown" {
- return v
- }
- return fmt.Sprintf("%s_%s", v, normalizeDate(Date))
- }
- func normalizeDate(date string) string {
- d := strings.TrimSpace(date)
- if idx := strings.LastIndexAny(d, "+-"); idx > 0 {
- d = d[:idx] + "TZ" + d[idx+1:]
- }
- d = strings.ReplaceAll(d, "-", "_")
- d = strings.ReplaceAll(d, ":", "_")
- d = strings.ReplaceAll(d, " ", "_")
- return d
- }
- func PrometheusLabel() string {
- return strings.ReplaceAll(String(), "\"", "")
- }
|