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
3
changelog/20502.txt
Normal file
3
changelog/20502.txt
Normal file
|
@ -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 (
|
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
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue