grype/internal/version/build.go

51 lines
1.7 KiB
Go
Raw Normal View History

2020-07-21 15:58:00 +00:00
package version
import (
"fmt"
"runtime"
"strings"
2020-07-21 15:58:00 +00:00
)
const valueNotProvided = "[not provided]"
// all variables here are provided as build-time arguments, with clear default values
2020-07-21 15:58:00 +00:00
var version = valueNotProvided
var syftVersion = valueNotProvided
2020-07-21 15:58:00 +00:00
var gitCommit = valueNotProvided
var gitDescription = valueNotProvided
2020-07-21 15:58:00 +00:00
var buildDate = valueNotProvided
var platform = fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH)
// Version defines the application version details (generally from build information)
2020-07-21 15:58:00 +00:00
type Version struct {
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
}
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{
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
}
}