logout.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package client
  2. import (
  3. "fmt"
  4. "golang.org/x/net/context"
  5. Cli "github.com/docker/docker/cli"
  6. flag "github.com/docker/docker/pkg/mflag"
  7. )
  8. // CmdLogout logs a user out from a Docker registry.
  9. //
  10. // If no server is specified, the user will be logged out from the registry's index server.
  11. //
  12. // Usage: docker logout [SERVER]
  13. func (cli *DockerCli) CmdLogout(args ...string) error {
  14. cmd := Cli.Subcmd("logout", []string{"[SERVER]"}, Cli.DockerCommands["logout"].Description+".\nIf no server is specified, the default is defined by the daemon.", true)
  15. cmd.Require(flag.Max, 1)
  16. cmd.ParseFlags(args, true)
  17. var serverAddress string
  18. if len(cmd.Args()) > 0 {
  19. serverAddress = cmd.Arg(0)
  20. } else {
  21. serverAddress = cli.electAuthServer(context.Background())
  22. }
  23. // check if we're logged in based on the records in the config file
  24. // which means it couldn't have user/pass cause they may be in the creds store
  25. if _, ok := cli.configFile.AuthConfigs[serverAddress]; !ok {
  26. fmt.Fprintf(cli.out, "Not logged in to %s\n", serverAddress)
  27. return nil
  28. }
  29. fmt.Fprintf(cli.out, "Remove login credentials for %s\n", serverAddress)
  30. if err := eraseCredentials(cli.configFile, serverAddress); err != nil {
  31. fmt.Fprintf(cli.out, "WARNING: could not erase credentials: %v\n", err)
  32. }
  33. return nil
  34. }