Skip to content
Snippets Groups Projects
version.go 852 B
Newer Older
package cmd

import (
	"fmt"
)

func SetupVersionCmd(program *Program) *VersionCmd {
	cmd := VersionCmd{
		program: program,
	}

	if _, err := program.Parser.AddCommand(
		"version", "Show the program version", "", &cmd,
	); err != nil {
		program.Logger.Fatal().Msg(err.Error())
	}

	return &cmd
}

type VersionCmd struct {
	program *Program

	Verbose bool `short:"v" long:"verbose" description:"display the source hash and build number if available"`
}

func (cmd *VersionCmd) Execute([]string) error {

	versionLine := cmd.program.Version.Version
	if cmd.Verbose {
		if cmd.program.Version.Hash != "" {
			versionLine += "\nHash:" + cmd.program.Version.Hash
		}
		if cmd.program.Version.Build != "" {
			versionLine += "\nBuild:" + cmd.program.Version.Build
		}
	}
	if _, err := fmt.Println(versionLine); err != nil {
		return err
	}

	return nil
}