From 64cd9fc4ee7d71497e13c96ab71d3eb179f5e321 Mon Sep 17 00:00:00 2001 From: Jarek Kowalski Date: Sat, 2 Jul 2016 11:33:52 -0700 Subject: [PATCH] added buildinfo command --- Makefile | 7 +++++-- cmd/kopia/command_buildinfo.go | 37 ++++++++++++++++++++++++++++++++++ cmd/kopia/main.go | 4 +++- 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 cmd/kopia/command_buildinfo.go diff --git a/Makefile b/Makefile index cc6a44bcc..87c69080a 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,10 @@ +VERSION=0.1-pre +VERSION_SUFFIX= + all: install test lint vet install: - go install github.com/kopia/kopia/cmd/kopia + go install -ldflags "-X main.buildVersion=$(VERSION) -X main.buildTime=`date -u '+%s'` -X main.buildGitHash=`git describe --dirty`" github.com/kopia/kopia/cmd/kopia build: go build github.com/kopia/kopia/... @@ -28,7 +31,7 @@ dev-deps: go get -u github.com/newhook/go-symbols go get -u github.com/sqs/goreturns -test: +test: install go test -timeout 30s github.com/kopia/kopia/... vtest: diff --git a/cmd/kopia/command_buildinfo.go b/cmd/kopia/command_buildinfo.go new file mode 100644 index 000000000..bab13123c --- /dev/null +++ b/cmd/kopia/command_buildinfo.go @@ -0,0 +1,37 @@ +package main + +import ( + "fmt" + "strconv" + "time" + + "gopkg.in/alecthomas/kingpin.v2" +) + +var ( + buildInfoCommand = app.Command("buildinfo", "Show build information").Hidden() + + buildVersion = "UNKNOWN" + buildGitHash = "UNKNOWN" + buildTime = "" +) + +func buildTimeString() string { + t, err := strconv.ParseInt(buildTime, 10, 64) + if err == nil { + return time.Unix(t, 0).Format(time.RFC3339) + } + + return "UNKNOWN" +} + +func init() { + buildInfoCommand.Action(runBuildInfoCommand) +} + +func runBuildInfoCommand(context *kingpin.ParseContext) error { + fmt.Println("Version:", buildVersion) + fmt.Println("Hash: ", buildGitHash) + fmt.Println("Built: ", buildTimeString()) + return nil +} diff --git a/cmd/kopia/main.go b/cmd/kopia/main.go index e5616df7b..bf8c0debd 100644 --- a/cmd/kopia/main.go +++ b/cmd/kopia/main.go @@ -17,11 +17,13 @@ ) var ( - app = kingpin.New("kopia", "Kopia - Online Backup").Version("0.0.1").Author("http://kopia.github.io/") + app = kingpin.New("kopia", "Kopia - Online Backup").Author("http://kopia.github.io/") ) func main() { log.SetFlags(0) + log.SetOutput(os.Stderr) + app.Version(buildVersion) kingpin.MustParse(app.Parse(os.Args[1:])) return }