= Go Version image::https://travis-ci.org/christopherhein/go-version.svg?branch=master[link="https://travis-ci.org/christopherhein/go-version"] This package gives allows you to use https://github.com/spf13/cobra and https://github.com/goreleaser/goreleaser together to output your version in a simple way. Supporting multiple flags for mutating the output. == Usage To use this package you will need to create `cobra` command for version such as this. [source,go] ---- package main import ( "fmt" goversion "go.hein.dev/go-version" "github.com/spf13/cobra" ) var ( shortened = false version = "dev" commit = "none" date = "unknown" output = "json" versionCmd = &cobra.Command{ Use: "version", Short: "Version will output the current build information", Long: ``, Run: func(_ *cobra.Command, _ []string) { resp := goVersion.FuncWithOutput(shortened, version, commit, date, output) fmt.Print(resp) return }, } ) func init() { versionCmd.Flags().BoolVarP(&shortened, "short", "s", false, "Print just the version number.") versionCmd.Flags().StringVarP(&output, "output", "o", "json", "Output format. One of 'yaml' or 'json'.") rootCmd.AddCommand(versionCmd) } ---- When you do this then you can pass in these flags at build time. _If you'd like more control of the output you can change the `Run` function to something more like this. [source,go] ---- Run: func(_ *cobra.Command, _ []string) { var response string versionOutput := New(version, commit, date) if shortened { response = versionOutput.ToShortened() } else { response = versionOutput.ToJSON() } fmt.Printf("%+v", response) return }, ---- [source,shell] ---- go build -ldflags "-X main.commit= -X main.date=" ---- This then gives your CLI the ability to use this for the JSON output: [source,shell] ---- $ ./my-cli version {"Version":"dev","Commit":"","Date":""} ---- Or to make this human readable you could use: [source,shell] ---- $ ./my-cli -s Version: dev Commit: Date: ---- == Testing To run the test suite all you need to do is run. [source,shell] ---- go test -v ./... ---- == Contributing If you want to contribute check out https://github.com/christopherhein/go-version/blob/master/CONTRIBUTING.adoc