aboutsummaryrefslogblamecommitdiffstats
path: root/commands/version.go
blob: 668c37fefbc492743633a06a3d8e8f114e59a345 (plain) (tree)










































                                                                                   
                                                   























                                                                                         
                                               

         
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 information",
	)
}