mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-29 10:26:29 +02:00
55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
// Package version enables setting build-time version using ldflags.
|
|
package version
|
|
|
|
import (
|
|
"fmt"
|
|
"runtime"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
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 = ""
|
|
// Timestamp specifies the build time, set by the compiler as UNIX timestamp.
|
|
Timestamp = ""
|
|
|
|
runtimeVersion = runtime.Version()
|
|
)
|
|
|
|
func BuildTime() string {
|
|
tm, err := strconv.Atoi(Timestamp)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
return time.Unix(int64(tm), 0).UTC().Format(time.RFC3339)
|
|
}
|
|
|
|
// 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)
|
|
}
|