summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-debug/debug.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/codeberg.org/gruf/go-debug/debug.go')
-rw-r--r--vendor/codeberg.org/gruf/go-debug/debug.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/vendor/codeberg.org/gruf/go-debug/debug.go b/vendor/codeberg.org/gruf/go-debug/debug.go
index 61e4eda41..6b5e56548 100644
--- a/vendor/codeberg.org/gruf/go-debug/debug.go
+++ b/vendor/codeberg.org/gruf/go-debug/debug.go
@@ -1,5 +1,9 @@
package debug
+import (
+ _debug "runtime/debug"
+)
+
// DEBUG returns whether debugging is enabled.
func DEBUG() bool {
return debug
@@ -11,3 +15,44 @@ func Run(fn func()) {
fn()
}
}
+
+// BuildInfo will return a useful new-line separated build info string for current binary, setting name as given value.
+func BuildInfo(name string) string {
+ // Read build info from current binary
+ build, ok := _debug.ReadBuildInfo()
+ if !ok {
+ return "name=" + name + "\n"
+ }
+
+ var flags, vcs, commit, time string
+
+ // Parse build information from BuildInfo.Settings
+ for i := 0; i < len(build.Settings); i++ {
+ switch build.Settings[i].Key {
+ case "-gcflags":
+ flags += ` -gcflags="` + build.Settings[i].Value + `"`
+ case "-ldflags":
+ flags += ` -ldflags="` + build.Settings[i].Value + `"`
+ case "-tags":
+ flags += ` -tags="` + build.Settings[i].Value + `"`
+ case "vcs":
+ vcs = build.Settings[i].Value
+ case "vcs.revision":
+ commit = build.Settings[i].Value
+ if len(commit) > 8 {
+ commit = commit[:8]
+ }
+ case "vcs.time":
+ time = build.Settings[i].Value
+ }
+ }
+
+ return "" +
+ "name=" + name + "\n" +
+ "vcs=" + vcs + "\n" +
+ "commit=" + commit + "\n" +
+ "version=" + build.Main.Version + "\n" +
+ "path=" + build.Path + "\n" +
+ "build=" + build.GoVersion + flags + "\n" +
+ "time=" + time + "\n"
+}