-
Notifications
You must be signed in to change notification settings - Fork 63
Expand file tree
/
Copy pathversion.go
More file actions
42 lines (36 loc) · 1.04 KB
/
version.go
File metadata and controls
42 lines (36 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package buildkite
import (
"runtime/debug"
"strings"
)
// Version returns the library version number based on Go module information
var Version = func() string {
// Try to get version from build info
info, ok := debug.ReadBuildInfo()
if !ok {
return "dev" // No build info available
}
// For the main module
if info.Main.Path == "github.com/buildkite/go-buildkite/v5" && info.Main.Version != "(devel)" {
// Remove the 'v' prefix if present
return strings.TrimPrefix(info.Main.Version, "v")
}
// Try to find this module in the dependency list
for _, dep := range info.Deps {
if dep.Path == "github.com/buildkite/go-buildkite/v5" && dep.Version != "(devel)" {
return strings.TrimPrefix(dep.Version, "v")
}
}
// If we're in development mode, try to get VCS info
for _, setting := range info.Settings {
if setting.Key == "vcs.revision" {
// Return shortened git commit hash
if len(setting.Value) >= 7 {
return "dev+" + setting.Value[:7]
}
return "dev+" + setting.Value
}
}
// Last resort fallback
return "dev"
}()