Audit with AI
This commit is contained in:
67
cmd/version.go
Normal file
67
cmd/version.go
Normal file
@@ -0,0 +1,67 @@
|
||||
// Patial Tech.
|
||||
// Author, Ankit Patial
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Version returns the version of the pgm CLI tool.
|
||||
// It tries to detect the version in the following order:
|
||||
// 1. Build-time ldflags (set via: go build -ldflags "-X main.version=v1.2.3")
|
||||
// 2. VCS information from build metadata (git tag/commit)
|
||||
// 3. Falls back to "dev" if no version information is available
|
||||
func Version() string {
|
||||
// If version was set at build time via ldflags
|
||||
if version != "" && version != "dev" {
|
||||
return version
|
||||
}
|
||||
|
||||
// Try to get version from build info (Go 1.18+)
|
||||
if info, ok := debug.ReadBuildInfo(); ok {
|
||||
// Check for version in main module
|
||||
if info.Main.Version != "" && info.Main.Version != "(devel)" {
|
||||
return info.Main.Version
|
||||
}
|
||||
|
||||
// Try to extract from VCS information
|
||||
var revision, modified string
|
||||
for _, setting := range info.Settings {
|
||||
switch setting.Key {
|
||||
case "vcs.revision":
|
||||
revision = setting.Value
|
||||
case "vcs.modified":
|
||||
modified = setting.Value
|
||||
}
|
||||
}
|
||||
|
||||
// If we have a git revision
|
||||
if revision != "" {
|
||||
// Shorten commit hash to 7 characters
|
||||
if len(revision) > 7 {
|
||||
revision = revision[:7]
|
||||
}
|
||||
|
||||
// Add -dirty suffix if modified
|
||||
if modified == "true" {
|
||||
return "dev-" + revision + "-dirty"
|
||||
}
|
||||
return "dev-" + revision
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback to dev
|
||||
return "dev"
|
||||
}
|
||||
|
||||
// GetVersionString returns a formatted version string for display
|
||||
func GetVersionString() string {
|
||||
v := Version()
|
||||
|
||||
// Clean up version string for display
|
||||
v = strings.TrimPrefix(v, "v")
|
||||
|
||||
return "v" + v
|
||||
}
|
||||
Reference in New Issue
Block a user