Files
katenary/internal/generator/version.go

37 lines
1.2 KiB
Go
Raw Normal View History

package generator
import (
"regexp"
"runtime/debug"
"strings"
)
// Version is the version of katenary. It is set at compile time.
var Version = "master" // changed at compile time
// GetVersion return the version of katneary. It's important to understand that
// the version is set at compile time for the github release. But, it the user get
// katneary using `go install`, the version should be different.
func GetVersion() string {
// try to get the semantic version from the Version variable (theorically set at compile time)
if reg := regexp.MustCompile(`^v?\d+.\d+.\d+.*|^release-.*`); reg.MatchString(Version) {
Version = strings.Replace(Version, "release-", "v", 1)
if Version[0] != 'v' {
Version = "v" + Version
}
return Version
}
if reg := regexp.MustCompile(`^releases/.*`); reg.MatchString(Version) {
return strings.Replace(Version, "releases/", "v", 1)
}
// OK... let's try to get the version from the build info
// get the version from the build info (when installed with go install)
if v, ok := debug.ReadBuildInfo(); ok {
return v.Main.Version + "-" + v.GoVersion
}
// OK... none worked, so we return the default version
return Version
}