From f13072cc038117e7cf970b6a084b5fd555fe7e22 Mon Sep 17 00:00:00 2001
From: Pavel Vorobyov
Date: Tue, 8 Oct 2019 13:38:55 +0300
Subject: [PATCH] version
---
.circleci/config.yml | 2 +-
build.sh | 14 ++++++++++++++
cli/handlers.go | 5 +++++
cli/version.go | 19 +++++++++++++++++++
4 files changed, 39 insertions(+), 1 deletion(-)
create mode 100755 build.sh
create mode 100644 cli/version.go
diff --git a/.circleci/config.yml b/.circleci/config.yml
index b0c32b6..0b09e04 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -8,6 +8,6 @@ jobs:
- checkout
- run:
name: Building XC
- command: go build -o xc cmd/xc/main.go
+ command: ./build.sh
- store_artifacts:
path: /tmp/build/xc
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..97ae74e
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+kname=`uname -s`
+kver=`uname -r`
+karch=`uname -m`
+gitcommit=`git rev-list --tags --max-count=1`
+appver=`git describe --tags $gitcommit`
+appbuild=`git rev-list ${appver}.. --count`
+
+importroot="github.com/viert/xc/cli"
+
+go build -o xc \
+ -ldflags="-X $importroot.appVersion=$appver -X $importroot.appBuild=$appbuild -X $importroot.kernelName=$kname -X $importroot.kernelVersion=$kver -X $importroot.kernelArch=$karch" \
+ cmd/xc/main.go
diff --git a/cli/handlers.go b/cli/handlers.go
index cfd217e..fb3d052 100644
--- a/cli/handlers.go
+++ b/cli/handlers.go
@@ -50,6 +50,7 @@ func (c *Cli) setupCmdHandlers() {
c.handlers["use_password_manager"] = c.doUsePasswordManager
c.handlers["distribute_type"] = c.doDistributeType
c.handlers["_passmgr_debug"] = c.doPassmgrDebug
+ c.handlers["version"] = c.doVersion
commands := make([]string, len(c.handlers))
i := 0
@@ -60,6 +61,10 @@ func (c *Cli) setupCmdHandlers() {
c.completer = newCompleter(c.store, commands)
}
+func (c *Cli) doVersion(name string, argsLine string, args ...string) {
+ term.Successf("XC version %s\n", version())
+}
+
func (c *Cli) doExit(name string, argsLine string, args ...string) {
c.stopped = true
}
diff --git a/cli/version.go b/cli/version.go
new file mode 100644
index 0000000..69472ac
--- /dev/null
+++ b/cli/version.go
@@ -0,0 +1,19 @@
+package cli
+
+import "fmt"
+
+var (
+ appVersion = ""
+ appBuild = ""
+
+ kernelName = ""
+ kernelVersion = ""
+ kernelArch = ""
+)
+
+func version() string {
+ if appVersion == "" {
+ return "dev"
+ }
+ return fmt.Sprintf("%s-%s (%s %s %s)", appVersion, appBuild, kernelName, kernelVersion, kernelArch)
+}