|
@@ -35,6 +35,7 @@ var (
|
|
|
IsCandidate bool
|
|
|
IsBeta bool
|
|
|
LongVersion string
|
|
|
+ Extra string
|
|
|
|
|
|
allowedVersionExp = regexp.MustCompile(`^v\d+\.\d+\.\d+(-[a-z0-9]+)*(\.\d+)*(\+\d+-g[0-9a-f]+)?(-[^\s]+)?$`)
|
|
|
|
|
@@ -46,6 +47,8 @@ var (
|
|
|
}
|
|
|
)
|
|
|
|
|
|
+const versionExtraAllowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-. "
|
|
|
+
|
|
|
func init() {
|
|
|
if Version != "unknown-dev" {
|
|
|
// If not a generic dev build, version string should come from git describe
|
|
@@ -75,6 +78,7 @@ func setBuildData() {
|
|
|
IsRelease = exp.MatchString(Version)
|
|
|
IsCandidate = strings.Contains(Version, "-rc.")
|
|
|
IsBeta = strings.Contains(Version, "-")
|
|
|
+ Extra = filterString(os.Getenv("STVERSIONEXTRA"), versionExtraAllowedChars)
|
|
|
|
|
|
stamp, _ := strconv.Atoi(Stamp)
|
|
|
Date = time.Unix(int64(stamp), 0)
|
|
@@ -103,7 +107,22 @@ func TagsList() []string {
|
|
|
tags = append(tags, strings.ToLower(envVar))
|
|
|
}
|
|
|
}
|
|
|
+ if Extra != "" {
|
|
|
+ tags = append(tags, Extra)
|
|
|
+ }
|
|
|
|
|
|
sort.Strings(tags)
|
|
|
return tags
|
|
|
}
|
|
|
+
|
|
|
+// filterString returns a copy of s with all characters not in allowedChars
|
|
|
+// removed.
|
|
|
+func filterString(s, allowedChars string) string {
|
|
|
+ var res strings.Builder
|
|
|
+ for _, c := range s {
|
|
|
+ if strings.ContainsRune(allowedChars, c) {
|
|
|
+ res.WriteRune(c)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return res.String()
|
|
|
+}
|