Use ldflags first to get version info, then fall back to VCS info
Some checks failed
/ golint (push) Failing after 3m53s
Some checks failed
/ golint (push) Failing after 3m53s
This commit is contained in:
parent
6d5d21f638
commit
85957b5ae6
2 changed files with 26 additions and 3 deletions
|
|
@ -15,6 +15,7 @@ pkgs.buildGoModule rec {
|
|||
"-w"
|
||||
"-X main.Version=${version}"
|
||||
"-X main.Commit=${gitRevision}"
|
||||
"-X main.BuildTime=${toString buildTime}"
|
||||
];
|
||||
meta = {
|
||||
description = "Nidus Sync";
|
||||
|
|
|
|||
|
|
@ -2,9 +2,18 @@ package version
|
|||
|
||||
import (
|
||||
"runtime/debug"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
// These will be set by ldflags at build time
|
||||
var (
|
||||
Version = "dev"
|
||||
Commit = ""
|
||||
BuildTime = "0"
|
||||
IsModified = "false"
|
||||
)
|
||||
|
||||
type VersionInfo struct {
|
||||
BuildTime time.Time `json:"build_time"`
|
||||
IsModified bool `json:"is_modified"`
|
||||
|
|
@ -12,12 +21,25 @@ type VersionInfo struct {
|
|||
}
|
||||
|
||||
func Get() VersionInfo {
|
||||
// Try ldflags first (set by Nix build)
|
||||
if Commit != "" && Commit != "unknown" {
|
||||
var buildTime time.Time
|
||||
if timestamp, err := strconv.ParseInt(BuildTime, 10, 64); err == nil && timestamp > 0 {
|
||||
buildTime = time.Unix(timestamp, 0)
|
||||
}
|
||||
|
||||
return VersionInfo{
|
||||
Revision: Commit,
|
||||
BuildTime: buildTime,
|
||||
IsModified: IsModified == "true",
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback to debug.ReadBuildInfo() for development
|
||||
info, ok := debug.ReadBuildInfo()
|
||||
if !ok {
|
||||
return VersionInfo{
|
||||
BuildTime: time.Now(),
|
||||
IsModified: false,
|
||||
Revision: "unknown",
|
||||
Revision: "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue