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  }