Add -H flag to our own version command & login command, & also —-log-level (-l) flag.

This commit is contained in:
Guillaume Tardif 2020-06-19 22:35:39 +02:00
parent dbaab41604
commit c3924f2e8e
4 changed files with 46 additions and 0 deletions

View File

@ -21,6 +21,8 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/docker/api/cli/cmd/mobyflags"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/spf13/cobra" "github.com/spf13/cobra"
@ -43,6 +45,7 @@ func Command() *cobra.Command {
flags.StringP("username", "u", "", "Username") flags.StringP("username", "u", "", "Username")
flags.StringP("password", "p", "", "Password") flags.StringP("password", "p", "", "Password")
flags.BoolP("password-stdin", "", false, "Take the password from stdin") flags.BoolP("password-stdin", "", false, "Take the password from stdin")
mobyflags.AddMobyFlagsForRetrocompatibility(flags)
return cmd return cmd
} }

View File

@ -0,0 +1,24 @@
package mobyflags
import (
"log"
flag "github.com/spf13/pflag"
)
// AddMobyFlagsForRetrocompatibility adds retrocompatibility flags to our commands
func AddMobyFlagsForRetrocompatibility(flags *flag.FlagSet) {
const hostFlag = "host"
flags.StringP(hostFlag, "H", "", "Daemon socket(s) to connect to")
markHidden(flags, hostFlag)
const logLevelFlag = "log-level"
flags.StringP(logLevelFlag, "l", "info", `Set the logging level ("debug"|"info"|"warn"|"error"|"fatal")`)
markHidden(flags, logLevelFlag)
}
func markHidden(flags *flag.FlagSet, flagName string) {
err := flags.MarkHidden(flagName)
if err != nil {
log.Fatal(err)
}
}

View File

@ -22,6 +22,7 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/docker/api/cli/cmd/mobyflags"
"github.com/docker/api/cli/mobycli" "github.com/docker/api/cli/mobycli"
) )
@ -39,6 +40,7 @@ func VersionCommand() *cobra.Command {
flags := cmd.Flags() flags := cmd.Flags()
flags.String("format", "", "Format the output using the given Go template") flags.String("format", "", "Format the output using the given Go template")
flags.String("kubeconfig", "", "Kubernetes config file") flags.String("kubeconfig", "", "Kubernetes config file")
mobyflags.AddMobyFlagsForRetrocompatibility(flags)
return cmd return cmd
} }

View File

@ -173,6 +173,23 @@ func (s *E2eSuite) TestLeaveLegacyErrorMessagesUnchanged() {
Expect(err).NotTo(BeNil()) Expect(err).NotTo(BeNil())
} }
func (s *E2eSuite) TestPassThroughRootLegacyFlags() {
output, err := s.NewDockerCommand("-H", "tcp://localhost:123", "version").Exec()
Expect(err).To(BeNil())
Expect(output).To(ContainSubstring("Client:"))
Expect(output).To(ContainSubstring("localhost:123"))
output, _ = s.NewDockerCommand("-H", "tcp://localhost:123", "login", "-u", "nouser", "-p", "wrongpasword").Exec()
Expect(output).To(ContainSubstring("WARNING! Using --password via the CLI is insecure"))
output, _ = s.NewDockerCommand("--log-level", "debug", "login", "-u", "nouser", "-p", "wrongpasword").Exec()
Expect(output).To(ContainSubstring("WARNING! Using --password via the CLI is insecure"))
output, _ = s.NewDockerCommand("login", "--help").Exec()
Expect(output).NotTo(ContainSubstring("--host"))
Expect(output).NotTo(ContainSubstring("--log-level"))
}
func (s *E2eSuite) TestDisplayFriendlyErrorMessageForLegacyCommands() { func (s *E2eSuite) TestDisplayFriendlyErrorMessageForLegacyCommands() {
s.NewDockerCommand("context", "create", "example", "test-example").ExecOrDie() s.NewDockerCommand("context", "create", "example", "test-example").ExecOrDie()
output, err := s.NewDockerCommand("--context", "test-example", "images").Exec() output, err := s.NewDockerCommand("--context", "test-example", "images").Exec()