github.com/vmware/govmomi@v0.51.0/cli/version/command.go (about) 1 // © Broadcom. All Rights Reserved. 2 // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. 3 // SPDX-License-Identifier: Apache-2.0 4 5 package version 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 "strings" 12 13 "github.com/vmware/govmomi/cli" 14 "github.com/vmware/govmomi/cli/flags" 15 ) 16 17 type version struct { 18 *flags.EmptyFlag 19 20 require string 21 long bool // detailed govc version output 22 } 23 24 func init() { 25 cli.Register("version", &version{}) 26 } 27 28 func (cmd *version) Register(ctx context.Context, f *flag.FlagSet) { 29 f.StringVar(&cmd.require, "require", "", "Require govc version >= this value") 30 f.BoolVar(&cmd.long, "l", false, "Print detailed govc version information") 31 } 32 33 func (cmd *version) Run(ctx context.Context, f *flag.FlagSet) error { 34 ver := strings.TrimPrefix(flags.BuildVersion, "v") 35 if cmd.require != "" { 36 v, err := flags.ParseVersion(ver) 37 if err != nil { 38 panic(err) 39 } 40 41 rv, err := flags.ParseVersion(cmd.require) 42 if err != nil { 43 return fmt.Errorf("failed to parse required version '%s': %s", cmd.require, err) 44 } 45 46 if !rv.Lte(v) { 47 return fmt.Errorf("version %s or higher is required, this is version %s", cmd.require, ver) 48 } 49 } 50 51 if cmd.long { 52 fmt.Printf("Build Version: %s\n", flags.BuildVersion) 53 fmt.Printf("Build Commit: %s\n", flags.BuildCommit) 54 fmt.Printf("Build Date: %s\n", flags.BuildDate) 55 } else { 56 fmt.Printf("govc %s\n", ver) 57 } 58 59 return nil 60 }