add options to docker login

This commit is contained in:
Victor Vieux 2013-06-21 10:00:25 +00:00
parent 5ccde4dffc
commit 42bcfcc927
2 changed files with 44 additions and 23 deletions

View File

@ -282,45 +282,62 @@ func (cli *DockerCli) CmdLogin(args ...string) error {
return readStringOnRawTerminal(stdin, stdout, false) return readStringOnRawTerminal(stdin, stdout, false)
} }
oldState, err := term.SetRawTerminal() cmd := Subcmd("login", "[OPTIONS]", "Register or Login to the docker registry server")
if err != nil { flUsername := cmd.String("u", "", "username")
return err flPassword := cmd.String("p", "", "password")
} flEmail := cmd.String("e", "", "email")
defer term.RestoreTerminal(oldState)
cmd := Subcmd("login", "", "Register or Login to the docker registry server")
if err := cmd.Parse(args); err != nil { if err := cmd.Parse(args); err != nil {
return nil return nil
} }
var oldState *term.State
if *flUsername != "" && *flPassword != "" && *flEmail != "" {
oldState, err := term.SetRawTerminal()
if err != nil {
return err
}
defer term.RestoreTerminal(oldState)
}
var username string var username string
var password string var password string
var email string var email string
fmt.Print("Username (", cli.authConfig.Username, "): ") if *flUsername == "" {
username = readAndEchoString(os.Stdin, os.Stdout) fmt.Print("Username (", cli.authConfig.Username, "): ")
if username == "" { username = readAndEchoString(os.Stdin, os.Stdout)
username = cli.authConfig.Username if username == "" {
username = cli.authConfig.Username
}
} else {
username = *flUsername
} }
if username != cli.authConfig.Username { if username != cli.authConfig.Username {
fmt.Print("Password: ") if *flPassword == "" {
password = readString(os.Stdin, os.Stdout) fmt.Print("Password: ")
password = readString(os.Stdin, os.Stdout)
if password == "" { if password == "" {
return fmt.Errorf("Error : Password Required") return fmt.Errorf("Error : Password Required")
}
} else {
password = *flPassword
} }
fmt.Print("Email (", cli.authConfig.Email, "): ") if *flEmail == "" {
email = readAndEchoString(os.Stdin, os.Stdout) fmt.Print("Email (", cli.authConfig.Email, "): ")
if email == "" { email = readAndEchoString(os.Stdin, os.Stdout)
email = cli.authConfig.Email if email == "" {
email = cli.authConfig.Email
}
} else {
email = *flEmail
} }
} else { } else {
password = cli.authConfig.Password password = cli.authConfig.Password
email = cli.authConfig.Email email = cli.authConfig.Email
} }
term.RestoreTerminal(oldState) if oldState != nil {
term.RestoreTerminal(oldState)
}
cli.authConfig.Username = username cli.authConfig.Username = username
cli.authConfig.Password = password cli.authConfig.Password = password
cli.authConfig.Email = email cli.authConfig.Email = email

View File

@ -8,6 +8,10 @@
:: ::
Usage: docker login Usage: docker login [OPTIONS]
Register or Login to the docker registry server Register or Login to the docker registry server
-e="": email
-p="": password
-u="": username