Fix version printing to pass vagrant-spec

* Makes all help output showup on stdout like in rubyland
 * Moves verbosity flags to capital Vs to get out of the way of version
 * Passes version down to mitchellh/cli so it handles -v and --version
   flags
 * Tweaks version output to remove the leading `v` which is not output
   in legacy vagrant
This commit is contained in:
Paul Hinze 2022-02-24 16:22:02 -06:00
parent 61c652c28a
commit 736e080add
No known key found for this signature in database
GPG Key ID: B69DEDF2D55501C0
2 changed files with 15 additions and 6 deletions

View File

@ -97,6 +97,10 @@ func Main(args []string) int {
Autocomplete: true, Autocomplete: true,
AutocompleteNoDefaultFlags: true, AutocompleteNoDefaultFlags: true,
HelpFunc: GroupedHelpFunc(cli.BasicHelpFunc(cliName)), HelpFunc: GroupedHelpFunc(cli.BasicHelpFunc(cliName)),
// Write help to stdout to match Ruby vagrant behavior
HelpWriter: os.Stdout,
// Need to set Version on the CLI to enable `-v` and `--version` handling
Version: vsn.FullVersionNumber(true),
} }
// Run the CLI // Run the CLI
@ -253,22 +257,22 @@ func logger(args []string) ([]string, hclog.Logger, io.Writer, error) {
} }
switch arg { switch arg {
case "-v": case "-V":
if level == hclog.NoLevel || level > hclog.Info { if level == hclog.NoLevel || level > hclog.Info {
level = hclog.Info level = hclog.Info
_ = os.Setenv("VAGRANT_LOG", "info") _ = os.Setenv("VAGRANT_LOG", "info")
} }
case "-vv": case "-VV":
if level == hclog.NoLevel || level > hclog.Debug { if level == hclog.NoLevel || level > hclog.Debug {
level = hclog.Debug level = hclog.Debug
_ = os.Setenv("VAGRANT_LOG", "debug") _ = os.Setenv("VAGRANT_LOG", "debug")
} }
case "-vvv": case "-VVV":
if level == hclog.NoLevel || level > hclog.Trace { if level == hclog.NoLevel || level > hclog.Trace {
level = hclog.Trace level = hclog.Trace
_ = os.Setenv("VAGRANT_LOG", "trace") _ = os.Setenv("VAGRANT_LOG", "trace")
} }
case "-vvvv": case "-VVVV":
if level == hclog.NoLevel || level > hclog.Trace { if level == hclog.NoLevel || level > hclog.Trace {
level = hclog.Trace level = hclog.Trace
_ = os.Setenv("VAGRANT_LOG", "trace") _ = os.Setenv("VAGRANT_LOG", "trace")

View File

@ -3,6 +3,7 @@ package version
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"regexp"
) )
var ( var (
@ -30,9 +31,13 @@ func GetVersion() *VersionInfo {
md := VersionMetadata md := VersionMetadata
desc := GitDescribe desc := GitDescribe
if desc != "" { if desc != "" {
ver = desc // git describe is based off tags which always start with v, but
// Vagrant has always reported its version number w/o a leading v in
// the CLI, so we'll remove it here
re := regexp.MustCompile(`^v`)
ver = re.ReplaceAllString(desc, "")
} else { } else {
ver = fmt.Sprintf("v%s", ver) ver = fmt.Sprintf("%s", ver)
} }
if desc == "" && rel == "" && VersionPrerelease != "" { if desc == "" && rel == "" && VersionPrerelease != "" {
rel = "dev" rel = "dev"