kuma
1package version2
3import (4"fmt"5"runtime"6"strings"7)
8
9var (10Product = "Kuma"11basedOnKuma = ""12version = "unknown"13gitTag = "unknown"14gitCommit = "unknown"15buildDate = "unknown"16Envoy = "unknown"17)
18
19type BuildInfo struct {20Product string21Version string22GitTag string23GitCommit string24BuildDate string25BasedOnKuma string26}
27
28func (b BuildInfo) FormatDetailedProductInfo() string {29base := []string{30fmt.Sprintf("Product: %s", b.Product),31fmt.Sprintf("Version: %s", b.Version),32fmt.Sprintf("Git Tag: %s", b.GitTag),33fmt.Sprintf("Git Commit: %s", b.GitCommit),34fmt.Sprintf("Build Date: %s", b.BuildDate),35}36if b.BasedOnKuma != "" {37base = append(base, fmt.Sprintf("Based on Kuma: %s", b.BasedOnKuma))38}39return strings.Join(40base,41"\n",42)43}
44
45func shortCommit(c string) string {46if len(c) < 7 {47return c48}49return c[:7]50}
51
52func (b BuildInfo) AsMap() map[string]string {53res := map[string]string{54"product": b.Product,55"version": b.Version,56"build_date": b.BuildDate,57"git_commit": shortCommit(b.GitCommit),58"git_tag": b.GitTag,59}60if b.BasedOnKuma != "" {61res["based_on_kuma"] = b.BasedOnKuma62}63return res64}
65
66func (b BuildInfo) UserAgent(component string) string {67commit := shortCommit(b.GitCommit)68if b.BasedOnKuma != "" {69commit = fmt.Sprintf("%s/kuma-%s", commit, b.BasedOnKuma)70}71return fmt.Sprintf("%s/%s (%s; %s; %s/%s)",72component,73b.Version,74runtime.GOOS,75runtime.GOARCH,76b.Product,77commit)78}
79
80var Build BuildInfo81
82func init() {83Build = BuildInfo{84Product: Product,85Version: version,86GitTag: gitTag,87GitCommit: gitCommit,88BuildDate: buildDate,89BasedOnKuma: basedOnKuma,90}91}
92