kuma

Форк
0
/
version.go 
91 строка · 1.7 Кб
1
package version
2

3
import (
4
	"fmt"
5
	"runtime"
6
	"strings"
7
)
8

9
var (
10
	Product     = "Kuma"
11
	basedOnKuma = ""
12
	version     = "unknown"
13
	gitTag      = "unknown"
14
	gitCommit   = "unknown"
15
	buildDate   = "unknown"
16
	Envoy       = "unknown"
17
)
18

19
type BuildInfo struct {
20
	Product     string
21
	Version     string
22
	GitTag      string
23
	GitCommit   string
24
	BuildDate   string
25
	BasedOnKuma string
26
}
27

28
func (b BuildInfo) FormatDetailedProductInfo() string {
29
	base := []string{
30
		fmt.Sprintf("Product:       %s", b.Product),
31
		fmt.Sprintf("Version:       %s", b.Version),
32
		fmt.Sprintf("Git Tag:       %s", b.GitTag),
33
		fmt.Sprintf("Git Commit:    %s", b.GitCommit),
34
		fmt.Sprintf("Build Date:    %s", b.BuildDate),
35
	}
36
	if b.BasedOnKuma != "" {
37
		base = append(base, fmt.Sprintf("Based on Kuma: %s", b.BasedOnKuma))
38
	}
39
	return strings.Join(
40
		base,
41
		"\n",
42
	)
43
}
44

45
func shortCommit(c string) string {
46
	if len(c) < 7 {
47
		return c
48
	}
49
	return c[:7]
50
}
51

52
func (b BuildInfo) AsMap() map[string]string {
53
	res := 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
	}
60
	if b.BasedOnKuma != "" {
61
		res["based_on_kuma"] = b.BasedOnKuma
62
	}
63
	return res
64
}
65

66
func (b BuildInfo) UserAgent(component string) string {
67
	commit := shortCommit(b.GitCommit)
68
	if b.BasedOnKuma != "" {
69
		commit = fmt.Sprintf("%s/kuma-%s", commit, b.BasedOnKuma)
70
	}
71
	return fmt.Sprintf("%s/%s (%s; %s; %s/%s)",
72
		component,
73
		b.Version,
74
		runtime.GOOS,
75
		runtime.GOARCH,
76
		b.Product,
77
		commit)
78
}
79

80
var Build BuildInfo
81

82
func init() {
83
	Build = BuildInfo{
84
		Product:     Product,
85
		Version:     version,
86
		GitTag:      gitTag,
87
		GitCommit:   gitCommit,
88
		BuildDate:   buildDate,
89
		BasedOnKuma: basedOnKuma,
90
	}
91
}
92

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.