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:
parent
c3c67f68da
commit
3553e75335
|
@ -0,0 +1,3 @@
|
|||
```release-note:bug
|
||||
cli: disable printing flags warnings messages for the ssh command
|
||||
```
|
|
@ -588,6 +588,7 @@ func (f *FlagSets) Completions() complete.Flags {
|
|||
type (
|
||||
ParseOptions interface{}
|
||||
ParseOptionAllowRawFormat bool
|
||||
DisableDisplayFlagWarning bool
|
||||
)
|
||||
|
||||
// Parse parses the given flags, returning any errors.
|
||||
|
@ -595,9 +596,17 @@ type (
|
|||
func (f *FlagSets) Parse(args []string, opts ...ParseOptions) error {
|
||||
err := f.mainSet.Parse(args)
|
||||
|
||||
warnings := generateFlagWarnings(f.Args())
|
||||
if warnings != "" && Format(f.ui) == "table" {
|
||||
f.ui.Warn(warnings)
|
||||
displayFlagWarningsDisabled := false
|
||||
for _, opt := range opts {
|
||||
if value, ok := opt.(DisableDisplayFlagWarning); ok {
|
||||
displayFlagWarningsDisabled = bool(value)
|
||||
}
|
||||
}
|
||||
if !displayFlagWarningsDisabled {
|
||||
warnings := generateFlagWarnings(f.Args())
|
||||
if warnings != "" && Format(f.ui) == "table" {
|
||||
f.ui.Warn(warnings)
|
||||
}
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
|
|
@ -241,7 +241,7 @@ type SSHCredentialResp struct {
|
|||
func (c *SSHCommand) Run(args []string) int {
|
||||
f := c.Flags()
|
||||
|
||||
if err := f.Parse(args); err != nil {
|
||||
if err := f.Parse(args, DisableDisplayFlagWarning(true)); err != nil {
|
||||
c.UI.Error(err.Error())
|
||||
return 1
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
package command
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"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")
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue