diff options
author | vasser <serhiy.vas@gmail.com> | 2023-01-13 19:11:57 +0200 |
---|---|---|
committer | vasser <serhiy.vas@gmail.com> | 2023-01-13 19:11:57 +0200 |
commit | fd4032087bdde93dfb7494bb12bf52bdc4d5ba74 (patch) | |
tree | e565f59f9626ee030695880d6ac3f4952874b5c3 /commands | |
parent | 9c50a359704f4edd2f33df6d256e032feae3a576 (diff) | |
download | git-bug-fd4032087bdde93dfb7494bb12bf52bdc4d5ba74.tar.gz git-bug-fd4032087bdde93dfb7494bb12bf52bdc4d5ba74.zip |
Fixed version info be set when go install
Diffstat (limited to 'commands')
-rw-r--r-- | commands/root.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/commands/root.go b/commands/root.go index cb4fd686..09f1bac4 100644 --- a/commands/root.go +++ b/commands/root.go @@ -4,6 +4,9 @@ package commands import ( "fmt" "os" + "os/exec" + "runtime/debug" + "strings" "github.com/spf13/cobra" @@ -31,6 +34,8 @@ the same git remote you are already using to collaborate with other people. `, PersistentPreRun: func(cmd *cobra.Command, args []string) { + GitLastTag, GitExactTag, GitCommit = getTagsAndCommit() + root := cmd.Root() if GitExactTag == "undefined" { @@ -90,3 +95,40 @@ func Execute() { os.Exit(1) } } + +func getTagsAndCommit() (tag, exacttag, commit string) { + var t, e, c string + + info, ok := debug.ReadBuildInfo() + + if !ok { + fmt.Println("could not get commit") + } + + for _, kv := range info.Settings { + switch kv.Key { + case "vcs.revision": + c = kv.Value + } + } + + cmd := exec.Command("git", "describe", "--tags", "--abbrev=0") + stdout, err := cmd.Output() + + if err != nil { + fmt.Printf("could not get last tag: %v\n", err.Error()) + } + + t = strings.TrimSuffix(string(stdout), "\n") + + cmd = exec.Command("git", "name-rev", "--name-only", "--tags", "HEAD") + stdout, err = cmd.Output() + + if err != nil { + fmt.Printf("could not get exact tag: %v\n", err.Error()) + } + + e = strings.TrimSuffix(string(stdout), "\n") + + return t, e, c +} |