forked from grafana/grafana
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathversion.go
67 lines (54 loc) · 1.44 KB
/
version.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package build
import (
"encoding/json"
"fmt"
"os"
"path/filepath"
"strings"
"time"
)
type PackageJSON struct {
Version string `json:"version"`
}
// Opens the package.json file in the provided directory and returns a struct that represents its contents
func OpenPackageJSON(dir string) (PackageJSON, error) {
reader, err := os.Open(filepath.Clean(dir + "/package.json"))
if err != nil {
return PackageJSON{}, err
}
defer logAndClose(reader)
jsonObj := PackageJSON{}
if err := json.NewDecoder(reader).Decode(&jsonObj); err != nil {
return PackageJSON{}, err
}
return jsonObj, nil
}
// LinuxPackageVersion extracts the linux package version and iteration out of the version string. The version string is likely extracted from the package JSON.
func LinuxPackageVersion(v string, buildID string) (string, string) {
var (
version = v
iteration = ""
)
// handle pre version stuff (deb / rpm does not support semver)
parts := strings.Split(v, "-")
if len(parts) > 1 {
version = parts[0]
iteration = parts[1]
}
if buildID == "" {
return version, iteration
}
// add timestamp to iteration
if buildID != "0" {
iteration = strings.Join([]string{buildID, iteration}, "")
return version, iteration
}
return version, fmt.Sprintf("%d%s", time.Now().Unix(), iteration)
}
func shortenBuildID(buildID string) string {
buildID = strings.ReplaceAll(buildID, "-", "")
if len(buildID) < 9 {
return buildID
}
return buildID[0:8]
}