github.com/uriddle/docker@v0.0.0-20210926094723-4072e6aeb013/api/client/logout.go (about)

     1  package client
     2  
     3  import (
     4  	"fmt"
     5  
     6  	Cli "github.com/docker/docker/cli"
     7  	flag "github.com/docker/docker/pkg/mflag"
     8  )
     9  
    10  // CmdLogout logs a user out from a Docker registry.
    11  //
    12  // If no server is specified, the user will be logged out from the registry's index server.
    13  //
    14  // Usage: docker logout [SERVER]
    15  func (cli *DockerCli) CmdLogout(args ...string) error {
    16  	cmd := Cli.Subcmd("logout", []string{"[SERVER]"}, Cli.DockerCommands["logout"].Description+".\nIf no server is specified, the default is defined by the daemon.", true)
    17  	cmd.Require(flag.Max, 1)
    18  
    19  	cmd.ParseFlags(args, true)
    20  
    21  	var serverAddress string
    22  	if len(cmd.Args()) > 0 {
    23  		serverAddress = cmd.Arg(0)
    24  	} else {
    25  		serverAddress = cli.electAuthServer()
    26  	}
    27  
    28  	if _, ok := cli.configFile.AuthConfigs[serverAddress]; !ok {
    29  		fmt.Fprintf(cli.out, "Not logged in to %s\n", serverAddress)
    30  		return nil
    31  	}
    32  
    33  	fmt.Fprintf(cli.out, "Remove login credentials for %s\n", serverAddress)
    34  	delete(cli.configFile.AuthConfigs, serverAddress)
    35  	if err := cli.configFile.Save(); err != nil {
    36  		return fmt.Errorf("Failed to save docker config: %v", err)
    37  	}
    38  
    39  	return nil
    40  }