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"
|
"-w"
|
||||||
"-X main.Version=${version}"
|
"-X main.Version=${version}"
|
||||||
"-X main.Commit=${gitRevision}"
|
"-X main.Commit=${gitRevision}"
|
||||||
|
"-X main.BuildTime=${toString buildTime}"
|
||||||
];
|
];
|
||||||
meta = {
|
meta = {
|
||||||
description = "Nidus Sync";
|
description = "Nidus Sync";
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,18 @@ package version
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"runtime/debug"
|
"runtime/debug"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// These will be set by ldflags at build time
|
||||||
|
var (
|
||||||
|
Version = "dev"
|
||||||
|
Commit = ""
|
||||||
|
BuildTime = "0"
|
||||||
|
IsModified = "false"
|
||||||
|
)
|
||||||
|
|
||||||
type VersionInfo struct {
|
type VersionInfo struct {
|
||||||
BuildTime time.Time `json:"build_time"`
|
BuildTime time.Time `json:"build_time"`
|
||||||
IsModified bool `json:"is_modified"`
|
IsModified bool `json:"is_modified"`
|
||||||
|
|
@ -12,12 +21,25 @@ type VersionInfo struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Get() VersionInfo {
|
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()
|
info, ok := debug.ReadBuildInfo()
|
||||||
if !ok {
|
if !ok {
|
||||||
return VersionInfo{
|
return VersionInfo{
|
||||||
BuildTime: time.Now(),
|
Revision: "unknown",
|
||||||
IsModified: false,
|
|
||||||
Revision: "unknown",
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue