Files

40 lines
871 B
Go

// cmd/myapp/version.go
package main
import (
"fmt"
"runtime/debug"
"github.com/spf13/cobra"
)
// Set via ldflags
var (
version = "dev"
commit = "unknown"
date = "unknown"
)
var versionCmd = &cobra.Command{
Use: "version",
Short: "Print version information",
Run: func(cmd *cobra.Command, args []string) {
fmt.Fprintf(cmd.OutOrStdout(), "myapp %s (commit: %s, built: %s)\n", version, commit, date)
if info, ok := debug.ReadBuildInfo(); ok {
fmt.Fprintf(cmd.OutOrStdout(), "go: %s\n", info.GoVersion)
}
},
}
func init() {
rootCmd.AddCommand(versionCmd)
}
// Build with:
//
// go build -ldflags "-X github.com/you/myapp/cmd/myapp.version=1.2.3 \
// -X github.com/you/myapp/cmd/myapp.commit=$(git rev-parse --short HEAD) \
// -X github.com/you/myapp/cmd/myapp.date=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
// -o bin/myapp ./cmd/myapp