2023-10-11 20:23:12 +02:00
|
|
|
// File pretty much completely stolen from a generated
|
|
|
|
// Autostrada project I used a while ago. They don't
|
|
|
|
// require attribution but I still want to give them
|
|
|
|
// credit for their amazing project.
|
|
|
|
// https://autostrada.dev/
|
|
|
|
|
|
|
|
package common
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"runtime/debug"
|
|
|
|
)
|
|
|
|
|
2024-02-28 11:53:39 +01:00
|
|
|
// GetVersion returns the current git commit hash.
|
|
|
|
// If the version is modified the hash ends in "-dirty"
|
2023-10-11 20:23:12 +02:00
|
|
|
func GetVersion() string {
|
|
|
|
var revision string
|
|
|
|
var modified bool
|
|
|
|
|
|
|
|
bi, ok := debug.ReadBuildInfo()
|
|
|
|
if ok {
|
|
|
|
for _, s := range bi.Settings {
|
|
|
|
switch s.Key {
|
|
|
|
case "vcs.revision":
|
|
|
|
revision = s.Value
|
|
|
|
case "vcs.modified":
|
|
|
|
if s.Value == "true" {
|
|
|
|
modified = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if revision == "" {
|
|
|
|
return "unavailable"
|
|
|
|
}
|
|
|
|
|
|
|
|
if modified {
|
|
|
|
return fmt.Sprintf("%s-dirty", revision)
|
|
|
|
}
|
|
|
|
|
|
|
|
return revision
|
|
|
|
}
|
2023-12-10 21:04:59 +01:00
|
|
|
|
2024-02-28 11:53:39 +01:00
|
|
|
// GetVersion returns the current git commit hash.
|
|
|
|
// This function does not add the "-dirty" string at the end of the hash.
|
2023-12-10 21:04:59 +01:00
|
|
|
func GetVersionPure() string {
|
|
|
|
var revision string
|
|
|
|
var modified bool
|
|
|
|
|
|
|
|
bi, ok := debug.ReadBuildInfo()
|
|
|
|
if ok {
|
|
|
|
for _, s := range bi.Settings {
|
|
|
|
switch s.Key {
|
|
|
|
case "vcs.revision":
|
|
|
|
revision = s.Value
|
|
|
|
case "vcs.modified":
|
|
|
|
if s.Value == "true" {
|
|
|
|
modified = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if revision == "" {
|
|
|
|
return "unavailable"
|
|
|
|
}
|
|
|
|
|
|
|
|
if modified {
|
|
|
|
return fmt.Sprintf("%s", revision)
|
|
|
|
}
|
|
|
|
|
|
|
|
return revision
|
|
|
|
}
|