github.com/aserto-dev/calc-version@v1.1.4/version.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "runtime" 6 "time" 7 ) 8 9 // package global var, value set by linker using ldflag -X 10 var ( 11 ver string //nolint:gochecknoglobals 12 date string //nolint:gochecknoglobals 13 commit string //nolint:gochecknoglobals 14 ) 15 16 // Info - version info. 17 type Info struct { 18 Version string 19 Date string 20 Commit string 21 } 22 23 // GetInfo - get version stamp information. 24 func GetInfo() Info { 25 if ver == "" { 26 ver = "0.0.0" 27 } 28 29 if date == "" { 30 date = time.Now().Format(time.RFC3339) 31 } 32 33 if commit == "" { 34 commit = "Undefined" 35 } 36 37 return Info{ 38 Version: ver, 39 Date: date, 40 Commit: commit, 41 } 42 } 43 44 // String() -- return version info string. 45 func (vi Info) String() string { 46 return fmt.Sprintf("%s g%s %s-%s [%s]", 47 vi.Version, 48 vi.Commit, 49 runtime.GOOS, 50 runtime.GOARCH, 51 vi.Date, 52 ) 53 }