disable printing flags warning message for the ssh command (#20502)

* disable printing flags warning message for the ssh command

* adding a test

* CL

* add go doc on the test
This commit is contained in:
Hamid Ghaf 2023-05-08 09:15:44 -07:00 committed by GitHub
parent c3c67f68da
commit 3553e75335
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 4 deletions

3
changelog/20502.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:bug
cli: disable printing flags warnings messages for the ssh command
```

View File

@ -588,6 +588,7 @@ func (f *FlagSets) Completions() complete.Flags {
type ( type (
ParseOptions interface{} ParseOptions interface{}
ParseOptionAllowRawFormat bool ParseOptionAllowRawFormat bool
DisableDisplayFlagWarning bool
) )
// Parse parses the given flags, returning any errors. // Parse parses the given flags, returning any errors.
@ -595,10 +596,18 @@ type (
func (f *FlagSets) Parse(args []string, opts ...ParseOptions) error { func (f *FlagSets) Parse(args []string, opts ...ParseOptions) error {
err := f.mainSet.Parse(args) err := f.mainSet.Parse(args)
displayFlagWarningsDisabled := false
for _, opt := range opts {
if value, ok := opt.(DisableDisplayFlagWarning); ok {
displayFlagWarningsDisabled = bool(value)
}
}
if !displayFlagWarningsDisabled {
warnings := generateFlagWarnings(f.Args()) warnings := generateFlagWarnings(f.Args())
if warnings != "" && Format(f.ui) == "table" { if warnings != "" && Format(f.ui) == "table" {
f.ui.Warn(warnings) f.ui.Warn(warnings)
} }
}
if err != nil { if err != nil {
return err return err

View File

@ -241,7 +241,7 @@ type SSHCredentialResp struct {
func (c *SSHCommand) Run(args []string) int { func (c *SSHCommand) Run(args []string) int {
f := c.Flags() f := c.Flags()
if err := f.Parse(args); err != nil { if err := f.Parse(args, DisableDisplayFlagWarning(true)); err != nil {
c.UI.Error(err.Error()) c.UI.Error(err.Error())
return 1 return 1
} }

View File

@ -4,6 +4,7 @@
package command package command
import ( import (
"strings"
"testing" "testing"
"github.com/mitchellh/cli" "github.com/mitchellh/cli"
@ -217,3 +218,18 @@ func TestIsSingleSSHArg(t *testing.T) {
}) })
} }
} }
// TestSSHCommandOmitFlagWarning checks if flags warning messages are printed
// in the output of the CLI command or not. If so, it will fail.
func TestSSHCommandOmitFlagWarning(t *testing.T) {
t.Parallel()
ui, cmd := testSSHCommand(t)
_ = cmd.Run([]string{"-mode", "ca", "-role", "otp_key_role", "user@1.2.3.4", "-extraFlag", "bug"})
combined := ui.OutputWriter.String() + ui.ErrorWriter.String()
if strings.Contains(combined, "Command flags must be provided before positional arguments. The following arguments will not be parsed as flags") {
t.Fatalf("ssh command displayed flag warnings")
}
}