aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile12
-rw-r--r--cache/repo_cache.go4
-rw-r--r--commands/root.go2
-rw-r--r--commands/version.go71
-rw-r--r--doc/man/git-bug-version.141
-rw-r--r--doc/man/git-bug.14
-rw-r--r--doc/md/git-bug.md1
-rw-r--r--doc/md/git-bug_version.md25
-rw-r--r--misc/bash_completion/git-bug30
-rw-r--r--misc/zsh_completion/git-bug2
10 files changed, 183 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index 17275db0..3c6207c7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,13 +1,21 @@
all: build
+GIT_COMMIT:=$(shell git rev-list -1 HEAD)
+GIT_LAST_TAG:=$(shell git describe --abbrev=0 --tags)
+GIT_EXACT_TAG:=$(shell git name-rev --name-only --tags HEAD)
+COMMANDS_PATH:=github.com/MichaelMure/git-bug/commands
+LDFLAGS:=-X ${COMMANDS_PATH}.GitCommit=${GIT_COMMIT} \
+ -X ${COMMANDS_PATH}.GitLastTag=${GIT_LAST_TAG} \
+ -X ${COMMANDS_PATH}.GitExactTag=${GIT_EXACT_TAG}
+
build:
go generate
- go build .
+ go build -ldflags "$(LDFLAGS)" .
# produce a build debugger friendly
debug-build:
go generate
- go build -gcflags=all="-N -l" .
+ go build -ldflags "$(LDFLAGS)" -gcflags=all="-N -l" .
install:
go generate
diff --git a/cache/repo_cache.go b/cache/repo_cache.go
index 2cb6a030..c38eeeeb 100644
--- a/cache/repo_cache.go
+++ b/cache/repo_cache.go
@@ -194,7 +194,7 @@ func cacheFilePath(repo repository.Repo) string {
}
func (c *RepoCache) buildCache() error {
- fmt.Printf("Building bug cache... ")
+ _, _ = fmt.Fprintf(os.Stderr, "Building bug cache... ")
c.excerpts = make(map[string]*BugExcerpt)
@@ -209,7 +209,7 @@ func (c *RepoCache) buildCache() error {
c.excerpts[b.Bug.Id()] = NewBugExcerpt(b.Bug, &snap)
}
- fmt.Println("Done.")
+ _, _ = fmt.Fprintln(os.Stderr, "Done.")
return nil
}
diff --git a/commands/root.go b/commands/root.go
index 5bb2b504..797ae949 100644
--- a/commands/root.go
+++ b/commands/root.go
@@ -17,8 +17,6 @@ var repo repository.ClockedRepo
// RootCmd represents the base command when called without any subcommands
var RootCmd = &cobra.Command{
- Version: "0.4.0",
-
Use: rootCommandName,
Short: "A bug tracker embedded in Git",
Long: `git-bug is a bug tracker embedded in git.
diff --git a/commands/version.go b/commands/version.go
new file mode 100644
index 00000000..b4dc008e
--- /dev/null
+++ b/commands/version.go
@@ -0,0 +1,71 @@
+package commands
+
+import (
+ "fmt"
+ "runtime"
+
+ "github.com/spf13/cobra"
+)
+
+// These variables are initialized externally during the build. See the Makefile.
+var GitCommit string
+var GitLastTag string
+var GitExactTag string
+
+var (
+ versionNumber bool
+ versionCommit bool
+ versionAll bool
+)
+
+func runVersionCmd(cmd *cobra.Command, args []string) {
+ if versionAll {
+ fmt.Printf("%s version: %s\n", rootCommandName, RootCmd.Version)
+ fmt.Printf("System version: %s/%s\n", runtime.GOARCH, runtime.GOOS)
+ fmt.Printf("Golang version: %s\n", runtime.Version())
+ return
+ }
+
+ if versionNumber {
+ fmt.Println(RootCmd.Version)
+ return
+ }
+
+ if versionCommit {
+ fmt.Println(GitCommit)
+ return
+ }
+
+ fmt.Printf("%s version: %s\n", rootCommandName, RootCmd.Version)
+}
+
+var versionCmd = &cobra.Command{
+ Use: "version",
+ Short: "Show git-bug version information",
+ Run: runVersionCmd,
+}
+
+func init() {
+ if GitExactTag == "undefined" {
+ GitExactTag = ""
+ }
+
+ RootCmd.Version = GitLastTag
+
+ if GitExactTag == "" {
+ RootCmd.Version = fmt.Sprintf("%s-dev-%.10s", RootCmd.Version, GitCommit)
+ }
+
+ RootCmd.AddCommand(versionCmd)
+ versionCmd.Flags().SortFlags = false
+
+ versionCmd.Flags().BoolVarP(&versionNumber, "number", "n", false,
+ "Only show the version number",
+ )
+ versionCmd.Flags().BoolVarP(&versionCommit, "commit", "c", false,
+ "Only show the commit hash",
+ )
+ versionCmd.Flags().BoolVarP(&versionAll, "all", "a", false,
+ "Show all version informations",
+ )
+}
diff --git a/doc/man/git-bug-version.1 b/doc/man/git-bug-version.1
new file mode 100644
index 00000000..09bf6cf4
--- /dev/null
+++ b/doc/man/git-bug-version.1
@@ -0,0 +1,41 @@
+.TH "GIT-BUG" "1" "Feb 2019" "Generated from git-bug's source code" ""
+.nh
+.ad l
+
+
+.SH NAME
+.PP
+git\-bug\-version \- Show git\-bug version information
+
+
+.SH SYNOPSIS
+.PP
+\fBgit\-bug version [flags]\fP
+
+
+.SH DESCRIPTION
+.PP
+Show git\-bug version information
+
+
+.SH OPTIONS
+.PP
+\fB\-n\fP, \fB\-\-number\fP[=false]
+ Only show the version number
+
+.PP
+\fB\-c\fP, \fB\-\-commit\fP[=false]
+ Only show the commit hash
+
+.PP
+\fB\-a\fP, \fB\-\-all\fP[=false]
+ Show all version informations
+
+.PP
+\fB\-h\fP, \fB\-\-help\fP[=false]
+ help for version
+
+
+.SH SEE ALSO
+.PP
+\fBgit\-bug(1)\fP
diff --git a/doc/man/git-bug.1 b/doc/man/git-bug.1
index 183d60d8..123f9a33 100644
--- a/doc/man/git-bug.1
+++ b/doc/man/git-bug.1
@@ -1,4 +1,4 @@
-.TH "GIT-BUG" "1" "Dec 2018" "Generated from git-bug's source code" ""
+.TH "GIT-BUG" "1" "Feb 2019" "Generated from git-bug's source code" ""
.nh
.ad l
@@ -31,4 +31,4 @@ the same git remote your are already using to collaborate with other peoples.
.SH SEE ALSO
.PP
-\fBgit\-bug\-add(1)\fP, \fBgit\-bug\-bridge(1)\fP, \fBgit\-bug\-commands(1)\fP, \fBgit\-bug\-comment(1)\fP, \fBgit\-bug\-deselect(1)\fP, \fBgit\-bug\-label(1)\fP, \fBgit\-bug\-ls(1)\fP, \fBgit\-bug\-ls\-label(1)\fP, \fBgit\-bug\-pull(1)\fP, \fBgit\-bug\-push(1)\fP, \fBgit\-bug\-select(1)\fP, \fBgit\-bug\-show(1)\fP, \fBgit\-bug\-status(1)\fP, \fBgit\-bug\-termui(1)\fP, \fBgit\-bug\-title(1)\fP, \fBgit\-bug\-webui(1)\fP
+\fBgit\-bug\-add(1)\fP, \fBgit\-bug\-bridge(1)\fP, \fBgit\-bug\-commands(1)\fP, \fBgit\-bug\-comment(1)\fP, \fBgit\-bug\-deselect(1)\fP, \fBgit\-bug\-label(1)\fP, \fBgit\-bug\-ls(1)\fP, \fBgit\-bug\-ls\-label(1)\fP, \fBgit\-bug\-pull(1)\fP, \fBgit\-bug\-push(1)\fP, \fBgit\-bug\-select(1)\fP, \fBgit\-bug\-show(1)\fP, \fBgit\-bug\-status(1)\fP, \fBgit\-bug\-termui(1)\fP, \fBgit\-bug\-title(1)\fP, \fBgit\-bug\-version(1)\fP, \fBgit\-bug\-webui(1)\fP
diff --git a/doc/md/git-bug.md b/doc/md/git-bug.md
index 4acec84c..a1c1c885 100644
--- a/doc/md/git-bug.md
+++ b/doc/md/git-bug.md
@@ -40,5 +40,6 @@ git-bug [flags]
* [git-bug status](git-bug_status.md) - Display or change a bug status
* [git-bug termui](git-bug_termui.md) - Launch the terminal UI
* [git-bug title](git-bug_title.md) - Display or change a title
+* [git-bug version](git-bug_version.md) - Show git-bug version information
* [git-bug webui](git-bug_webui.md) - Launch the web UI
diff --git a/doc/md/git-bug_version.md b/doc/md/git-bug_version.md
new file mode 100644
index 00000000..6b6d4288
--- /dev/null
+++ b/doc/md/git-bug_version.md
@@ -0,0 +1,25 @@
+## git-bug version
+
+Show git-bug version information
+
+### Synopsis
+
+Show git-bug version information
+
+```
+git-bug version [flags]
+```
+
+### Options
+
+```
+ -n, --number Only show the version number
+ -c, --commit Only show the commit hash
+ -a, --all Show all version informations
+ -h, --help help for version
+```
+
+### SEE ALSO
+
+* [git-bug](git-bug.md) - A bug tracker embedded in Git
+
diff --git a/misc/bash_completion/git-bug b/misc/bash_completion/git-bug
index 3870e3a0..8551223d 100644
--- a/misc/bash_completion/git-bug
+++ b/misc/bash_completion/git-bug
@@ -799,6 +799,35 @@ _git-bug_title()
noun_aliases=()
}
+_git-bug_version()
+{
+ last_command="git-bug_version"
+
+ command_aliases=()
+
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ local_nonpersistent_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+ flags+=("--number")
+ flags+=("-n")
+ local_nonpersistent_flags+=("--number")
+ flags+=("--commit")
+ flags+=("-c")
+ local_nonpersistent_flags+=("--commit")
+ flags+=("--all")
+ flags+=("-a")
+ local_nonpersistent_flags+=("--all")
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+ noun_aliases=()
+}
+
_git-bug_webui()
{
last_command="git-bug_webui"
@@ -845,6 +874,7 @@ _git-bug_root_command()
commands+=("status")
commands+=("termui")
commands+=("title")
+ commands+=("version")
commands+=("webui")
flags=()
diff --git a/misc/zsh_completion/git-bug b/misc/zsh_completion/git-bug
index 2deae548..a416ccef 100644
--- a/misc/zsh_completion/git-bug
+++ b/misc/zsh_completion/git-bug
@@ -8,7 +8,7 @@ case $state in
level1)
case $words[1] in
git-bug)
- _arguments '1: :(add bridge commands comment deselect label ls ls-label pull push select show status termui title webui)'
+ _arguments '1: :(add bridge commands comment deselect label ls ls-label pull push select show status termui title version webui)'
;;
*)
_arguments '*: :_files'