func/cmd/version.go

54 lines
1.2 KiB
Go

package cmd
import (
"fmt"
"github.com/ory/viper"
"github.com/spf13/cobra"
"knative.dev/func/pkg/config"
)
func NewVersionCmd(version Version) *cobra.Command {
cmd := &cobra.Command{
Use: "version",
Short: "Function client version information",
Long: `
NAME
{{rootCmdUse}} version - function version information.
SYNOPSIS
{{rootCmdUse}} version [-v|--verbose]
DESCRIPTION
Print version information. Use the --verbose option to see date stamp and
associated git source control hash if available.
o Print the functions version
$ {{rootCmdUse}} version
o Print the functions version along with source git commit hash and other
metadata.
$ {{rootCmdUse}} version -v
`,
SuggestFor: []string{"vers", "version"}, //nolint:misspell
PreRunE: bindEnv("verbose"),
Run: func(cmd *cobra.Command, _ []string) {
runVersion(cmd, version)
},
}
cfg, err := config.NewDefault()
if err != nil {
fmt.Fprintf(cmd.OutOrStdout(), "error loading config at '%v'. %v\n", config.File(), err)
}
addVerboseFlag(cmd, cfg.Verbose)
return cmd
}
// Run
func runVersion(cmd *cobra.Command, version Version) {
version.Verbose = viper.GetBool("verbose")
fmt.Fprintf(cmd.OutOrStdout(), "%v\n", version)
}