Browse code

add options to docker login

Victor Vieux authored on 2013/06/21 19:00:25
Showing 2 changed files
... ...
@@ -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
... ...
@@ -8,6 +8,10 @@
8 8
 
9 9
 ::
10 10
 
11
-    Usage: docker login
11
+    Usage: docker login [OPTIONS]
12 12
 
13 13
     Register or Login to the docker registry server
14
+
15
+    -e="": email
16
+    -p="": password
17
+    -u="": username