mirror of
https://github.com/grafana/grafana.git
synced 2024-11-24 09:50:29 -06:00
67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
package build
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
"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("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]
|
|
}
|