2015-03-24 23:57:23 -04:00
package client
import (
"fmt"
2015-05-05 00:18:28 -04:00
Cli "github.com/docker/docker/cli"
2015-03-24 23:57:23 -04:00
flag "github.com/docker/docker/pkg/mflag"
)
2015-03-25 13:34:41 -04:00
// CmdLogout logs a user out from a Docker registry.
//
// If no server is specified, the user will be logged out from the registry's index server.
//
// Usage: docker logout [SERVER]
2015-03-24 23:57:23 -04:00
func ( cli * DockerCli ) CmdLogout ( args ... string ) error {
2016-02-03 13:30:17 -05:00
cmd := Cli . Subcmd ( "logout" , [ ] string { "[SERVER]" } , Cli . DockerCommands [ "logout" ] . Description + ".\nIf no server is specified, the default is defined by the daemon." , true )
2015-03-24 23:57:23 -04:00
cmd . Require ( flag . Max , 1 )
2015-05-23 11:57:50 -04:00
cmd . ParseFlags ( args , true )
2015-07-03 05:26:09 -04:00
2016-02-03 13:30:17 -05:00
var serverAddress string
2015-03-24 23:57:23 -04:00
if len ( cmd . Args ( ) ) > 0 {
serverAddress = cmd . Arg ( 0 )
2016-02-03 13:30:17 -05:00
} else {
serverAddress = cli . electAuthServer ( )
2015-03-24 23:57:23 -04:00
}
2016-03-02 08:26:29 -05:00
// check if we're logged in based on the records in the config file
// which means it couldn't have user/pass cause they may be in the creds store
2015-04-01 18:39:37 -04:00
if _ , ok := cli . configFile . AuthConfigs [ serverAddress ] ; ! ok {
2015-03-24 23:57:23 -04:00
fmt . Fprintf ( cli . out , "Not logged in to %s\n" , serverAddress )
2015-08-08 07:47:27 -04:00
return nil
}
2015-03-24 23:57:23 -04:00
2015-08-08 07:47:27 -04:00
fmt . Fprintf ( cli . out , "Remove login credentials for %s\n" , serverAddress )
2016-03-02 08:26:29 -05:00
if err := eraseCredentials ( cli . configFile , serverAddress ) ; err != nil {
fmt . Fprintf ( cli . out , "WARNING: could not erase credentials: %v\n" , err )
2015-03-24 23:57:23 -04:00
}
2015-08-08 07:47:27 -04:00
2015-03-24 23:57:23 -04:00
return nil
}