// Package version enables setting build-time version using ldflags. package version import ( "fmt" "runtime" "strings" ) var ( // ProjectName is the canonical project name set by ldl flags ProjectName = "" // ProjectURL is the canonical project url set by ldl flags ProjectURL = "" // Version specifies Semantic versioning increment (MAJOR.MINOR.PATCH). Version = "v0.0.0" // GitCommit specifies the git commit sha, set by the compiler. GitCommit = "" // BuildMeta specifies release type (dev,rc1,beta,etc) BuildMeta = "" runtimeVersion = runtime.Version() ) // FullVersion returns a version string. func FullVersion() string { var sb strings.Builder sb.Grow(len(Version) + len(GitCommit) + len(BuildMeta) + len("-") + len("+")) sb.WriteString(Version) if BuildMeta != "" { sb.WriteString("-" + BuildMeta) } if GitCommit != "" { sb.WriteString("+" + GitCommit) } return sb.String() } // UserAgent returns a user-agent string as specified in RFC 2616:14.43 // https://tools.ietf.org/html/rfc2616 func UserAgent() string { return fmt.Sprintf("%s/%s (+%s; %s; %s)", ProjectName, Version, ProjectURL, GitCommit, runtimeVersion) }