| ... | ... |
@@ -282,45 +282,62 @@ func (cli *DockerCli) CmdLogin(args ...string) error {
|
| 282 | 282 |
return readStringOnRawTerminal(stdin, stdout, false) |
| 283 | 283 |
} |
| 284 | 284 |
|
| 285 |
- oldState, err := term.SetRawTerminal() |
|
| 286 |
- if err != nil {
|
|
| 287 |
- return err |
|
| 288 |
- } |
|
| 289 |
- defer term.RestoreTerminal(oldState) |
|
| 290 |
- |
|
| 291 |
- cmd := Subcmd("login", "", "Register or Login to the docker registry server")
|
|
| 285 |
+ cmd := Subcmd("login", "[OPTIONS]", "Register or Login to the docker registry server")
|
|
| 286 |
+ flUsername := cmd.String("u", "", "username")
|
|
| 287 |
+ flPassword := cmd.String("p", "", "password")
|
|
| 288 |
+ flEmail := cmd.String("e", "", "email")
|
|
| 292 | 289 |
if err := cmd.Parse(args); err != nil {
|
| 293 | 290 |
return nil |
| 294 | 291 |
} |
| 292 |
+ var oldState *term.State |
|
| 293 |
+ if *flUsername != "" && *flPassword != "" && *flEmail != "" {
|
|
| 294 |
+ oldState, err := term.SetRawTerminal() |
|
| 295 |
+ if err != nil {
|
|
| 296 |
+ return err |
|
| 297 |
+ } |
|
| 298 |
+ defer term.RestoreTerminal(oldState) |
|
| 299 |
+ } |
|
| 295 | 300 |
|
| 296 | 301 |
var username string |
| 297 | 302 |
var password string |
| 298 | 303 |
var email string |
| 299 | 304 |
|
| 300 |
- fmt.Print("Username (", cli.authConfig.Username, "): ")
|
|
| 301 |
- username = readAndEchoString(os.Stdin, os.Stdout) |
|
| 302 |
- if username == "" {
|
|
| 303 |
- username = cli.authConfig.Username |
|
| 305 |
+ if *flUsername == "" {
|
|
| 306 |
+ fmt.Print("Username (", cli.authConfig.Username, "): ")
|
|
| 307 |
+ username = readAndEchoString(os.Stdin, os.Stdout) |
|
| 308 |
+ if username == "" {
|
|
| 309 |
+ username = cli.authConfig.Username |
|
| 310 |
+ } |
|
| 311 |
+ } else {
|
|
| 312 |
+ username = *flUsername |
|
| 304 | 313 |
} |
| 305 | 314 |
if username != cli.authConfig.Username {
|
| 306 |
- fmt.Print("Password: ")
|
|
| 307 |
- password = readString(os.Stdin, os.Stdout) |
|
| 308 |
- |
|
| 309 |
- if password == "" {
|
|
| 310 |
- return fmt.Errorf("Error : Password Required")
|
|
| 315 |
+ if *flPassword == "" {
|
|
| 316 |
+ fmt.Print("Password: ")
|
|
| 317 |
+ password = readString(os.Stdin, os.Stdout) |
|
| 318 |
+ if password == "" {
|
|
| 319 |
+ return fmt.Errorf("Error : Password Required")
|
|
| 320 |
+ } |
|
| 321 |
+ } else {
|
|
| 322 |
+ password = *flPassword |
|
| 311 | 323 |
} |
| 312 | 324 |
|
| 313 |
- fmt.Print("Email (", cli.authConfig.Email, "): ")
|
|
| 314 |
- email = readAndEchoString(os.Stdin, os.Stdout) |
|
| 315 |
- if email == "" {
|
|
| 316 |
- email = cli.authConfig.Email |
|
| 325 |
+ if *flEmail == "" {
|
|
| 326 |
+ fmt.Print("Email (", cli.authConfig.Email, "): ")
|
|
| 327 |
+ email = readAndEchoString(os.Stdin, os.Stdout) |
|
| 328 |
+ if email == "" {
|
|
| 329 |
+ email = cli.authConfig.Email |
|
| 330 |
+ } |
|
| 331 |
+ } else {
|
|
| 332 |
+ email = *flEmail |
|
| 317 | 333 |
} |
| 318 | 334 |
} else {
|
| 319 | 335 |
password = cli.authConfig.Password |
| 320 | 336 |
email = cli.authConfig.Email |
| 321 | 337 |
} |
| 322 |
- term.RestoreTerminal(oldState) |
|
| 323 |
- |
|
| 338 |
+ if oldState != nil {
|
|
| 339 |
+ term.RestoreTerminal(oldState) |
|
| 340 |
+ } |
|
| 324 | 341 |
cli.authConfig.Username = username |
| 325 | 342 |
cli.authConfig.Password = password |
| 326 | 343 |
cli.authConfig.Email = email |