diff --git a/version/version.go b/version/version.go index 12ab309b..fb631328 100644 --- a/version/version.go +++ b/version/version.go @@ -1,13 +1,47 @@ package version +import ( + "runtime/debug" + "strconv" +) + +const ( + defaultVersion = "v0.0.0+unknown" +) + var ( // Package is filled at linking time Package = "github.com/docker/buildx" // Version holds the complete version number. Filled in at linking time. - Version = "v0.0.0+unknown" + Version = defaultVersion // Revision is filled with the VCS (e.g. git) revision being used to build // the program at linking time. Revision = "" ) + +func init() { + if Revision != "" { + return + } + + if info, ok := debug.ReadBuildInfo(); ok { + revision := "" + modified := false + for _, setting := range info.Settings { + switch setting.Key { + case "vcs.revision": + revision = setting.Value + case "vcs.modified": + modified, _ = strconv.ParseBool(setting.Value) + } + } + if revision != "" { + Revision = revision + if modified { + Revision += ".m" + } + } + } +}