2015-03-24 23:57:23 -04:00
package client
import (
"fmt"
flag "github.com/docker/docker/pkg/mflag"
"github.com/docker/docker/registry"
)
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 {
cmd := cli . Subcmd ( "logout" , "[SERVER]" , "Log out from a Docker registry, if no server is\nspecified \"" + registry . IndexServerAddress ( ) + "\" is the default." , true )
cmd . Require ( flag . Max , 1 )
2015-03-28 21:22:46 -04:00
cmd . ParseFlags ( args , false )
2015-03-24 23:57:23 -04:00
serverAddress := registry . IndexServerAddress ( )
if len ( cmd . Args ( ) ) > 0 {
serverAddress = cmd . Arg ( 0 )
}
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 )
} else {
fmt . Fprintf ( cli . out , "Remove login credentials for %s\n" , serverAddress )
2015-04-01 18:39:37 -04:00
delete ( cli . configFile . AuthConfigs , serverAddress )
2015-03-24 23:57:23 -04:00
2015-04-01 18:39:37 -04:00
if err := cli . configFile . Save ( ) ; err != nil {
2015-03-24 23:57:23 -04:00
return fmt . Errorf ( "Failed to save docker config: %v" , err )
}
}
return nil
}