/
build_info.go
52 lines (42 loc) · 1.08 KB
/
build_info.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package confinator
import (
"fmt"
"hash/crc32"
"os"
"strings"
)
const (
EnvBuildUniqueID = "BUILD_UNIQUE_ID"
)
type BuildInfo struct {
BuildName string `json:"build_name"`
BuildDate string `json:"build_date"`
BuildBranch string `json:"build_branch"`
BuildNumber string `json:"build_number"`
Version string `json:"version"`
VersionHash int64 `json:"version_hash"`
BuildUniqueID string `json:"unique_id"`
}
func NewBuildInfo(name, date, branch, number string) BuildInfo {
var (
version string
buildUniqueID string
)
if strings.HasPrefix(branch, "release") {
version = strings.TrimLeft(branch, "release/")
} else {
version = fmt.Sprintf("dev-%s", branch)
}
// try to get build unique id, ok if we don't for local dev.
buildUniqueID = os.Getenv(EnvBuildUniqueID)
vh := crc32.ChecksumIEEE([]byte(fmt.Sprintf("%s%s%s", date, branch, buildUniqueID)))
return BuildInfo{
BuildName: name,
BuildDate: date,
BuildBranch: branch,
BuildNumber: number,
Version: version,
VersionHash: int64(vh),
BuildUniqueID: buildUniqueID,
}
}