2020-07-21 15:58:00 +00:00
|
|
|
package version
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"runtime"
|
2022-02-11 19:24:25 +00:00
|
|
|
"strings"
|
2020-07-21 15:58:00 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
const valueNotProvided = "[not provided]"
|
|
|
|
|
2022-02-11 19:24:25 +00:00
|
|
|
// all variables here are provided as build-time arguments, with clear default values
|
2020-07-21 15:58:00 +00:00
|
|
|
var version = valueNotProvided
|
2021-09-16 20:08:07 +00:00
|
|
|
var syftVersion = valueNotProvided
|
2020-07-21 15:58:00 +00:00
|
|
|
var gitCommit = valueNotProvided
|
2022-02-11 19:24:25 +00:00
|
|
|
var gitDescription = valueNotProvided
|
2020-07-21 15:58:00 +00:00
|
|
|
var buildDate = valueNotProvided
|
|
|
|
var platform = fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH)
|
|
|
|
|
2022-02-11 19:24:25 +00:00
|
|
|
// Version defines the application version details (generally from build information)
|
2020-07-21 15:58:00 +00:00
|
|
|
type Version struct {
|
2022-02-11 19:24:25 +00:00
|
|
|
Version string `json:"version"` // application semantic version
|
|
|
|
SyftVersion string `json:"syftVersion"` // the version of syft being used by grype
|
|
|
|
GitCommit string `json:"gitCommit"` // git SHA at build-time
|
|
|
|
GitDescription string `json:"gitDescription"` // output of 'git describe --dirty --always --tags'
|
|
|
|
BuildDate string `json:"buildDate"` // date of the build
|
|
|
|
GoVersion string `json:"goVersion"` // go runtime version at build-time
|
|
|
|
Compiler string `json:"compiler"` // compiler used at build-time
|
|
|
|
Platform string `json:"platform"` // GOOS and GOARCH at build-time
|
2020-07-21 15:58:00 +00:00
|
|
|
}
|
|
|
|
|
2022-02-11 19:24:25 +00:00
|
|
|
func (v Version) isProductionBuild() bool {
|
|
|
|
if strings.Contains(v.Version, "SNAPSHOT") || strings.Contains(v.Version, valueNotProvided) {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
|
|
|
|
// FromBuild provides all version details
|
2020-07-21 15:58:00 +00:00
|
|
|
func FromBuild() Version {
|
|
|
|
return Version{
|
2022-02-11 19:24:25 +00:00
|
|
|
Version: version,
|
|
|
|
SyftVersion: syftVersion,
|
|
|
|
GitCommit: gitCommit,
|
|
|
|
GitDescription: gitDescription,
|
|
|
|
BuildDate: buildDate,
|
|
|
|
GoVersion: runtime.Version(),
|
|
|
|
Compiler: runtime.Compiler,
|
|
|
|
Platform: platform,
|
2020-07-21 15:58:00 +00:00
|
|
|
}
|
|
|
|
}
|