ソースを参照

add options to docker login

Victor Vieux 12 年 前
コミット
42bcfcc927
2 ファイル変更44 行追加23 行削除
  1. 39 22
      commands.go
  2. 5 1
      docs/sources/commandline/command/login.rst

+ 39 - 22
commands.go

@@ -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()
-	if err != nil {
-		return err
-	}
-	defer term.RestoreTerminal(oldState)
-
-	cmd := Subcmd("login", "", "Register or Login to the docker registry server")
+	cmd := Subcmd("login", "[OPTIONS]", "Register or Login to the docker registry server")
+	flUsername := cmd.String("u", "", "username")
+	flPassword := cmd.String("p", "", "password")
+	flEmail := cmd.String("e", "", "email")
 	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, "): ")
-	username = readAndEchoString(os.Stdin, os.Stdout)
-	if username == "" {
-		username = cli.authConfig.Username
+	if *flUsername == "" {
+		fmt.Print("Username (", cli.authConfig.Username, "): ")
+		username = readAndEchoString(os.Stdin, os.Stdout)
+		if username == "" {
+			username = cli.authConfig.Username
+		}
+	} else {
+		username = *flUsername
 	}
 	}
 	if username != cli.authConfig.Username {
 	if username != cli.authConfig.Username {
-		fmt.Print("Password: ")
-		password = readString(os.Stdin, os.Stdout)
-
-		if password == "" {
-			return fmt.Errorf("Error : Password Required")
+		if *flPassword == "" {
+			fmt.Print("Password: ")
+			password = readString(os.Stdin, os.Stdout)
+			if password == "" {
+				return fmt.Errorf("Error : Password Required")
+			}
+		} else {
+			password = *flPassword
 		}
 		}
 
 
-		fmt.Print("Email (", cli.authConfig.Email, "): ")
-		email = readAndEchoString(os.Stdin, os.Stdout)
-		if email == "" {
-			email = cli.authConfig.Email
+		if *flEmail == "" {
+			fmt.Print("Email (", cli.authConfig.Email, "): ")
+			email = readAndEchoString(os.Stdin, os.Stdout)
+			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

+ 5 - 1
docs/sources/commandline/command/login.rst

@@ -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