pull/32393/merge
Mukul Negi 3 days ago committed by GitHub
commit dc4bba9758
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -206,11 +206,12 @@ func (p *Package) Clearsign(filename string) error {
// promptUser implements provenance.PassphraseFetcher // promptUser implements provenance.PassphraseFetcher
func promptUser(name string) ([]byte, error) { func promptUser(name string) ([]byte, error) {
fmt.Printf("Password for key %q > ", name) // Prompts go to stderr so stdout stays clean for scripting.
fmt.Fprintf(os.Stderr, "Password for key %q > ", name)
// syscall.Stdin is not an int in all environments and needs to be coerced // syscall.Stdin is not an int in all environments and needs to be coerced
// into one there (e.g., Windows) // into one there (e.g., Windows)
pw, err := term.ReadPassword(int(syscall.Stdin)) pw, err := term.ReadPassword(int(syscall.Stdin))
fmt.Println() fmt.Fprintln(os.Stderr)
return pw, err return pw, err
} }

@ -172,9 +172,10 @@ func (o *pluginPackageOptions) run(out io.Writer) error {
} }
func (o *pluginPackageOptions) promptUser(name string) ([]byte, error) { func (o *pluginPackageOptions) promptUser(name string) ([]byte, error) {
fmt.Printf("Password for key %q > ", name) // Prompts go to stderr so stdout stays clean for scripting.
fmt.Fprintf(os.Stderr, "Password for key %q > ", name)
pw, err := term.ReadPassword(int(syscall.Stdin)) pw, err := term.ReadPassword(int(syscall.Stdin))
fmt.Println() fmt.Fprintln(os.Stderr)
return pw, err return pw, err
} }

@ -136,14 +136,17 @@ func getUsernamePassword(usernameOpt, passwordOpt string, passwordFromStdinOpt b
// Copied/adapted from https://github.com/oras-project/oras // Copied/adapted from https://github.com/oras-project/oras
func readLine(prompt string, silent bool) (string, error) { func readLine(prompt string, silent bool) (string, error) {
fmt.Print(prompt) // Prompts go to stderr so stdout stays clean for scripting.
if silent { fmt.Fprint(os.Stderr, prompt)
if silent && term.IsTerminal(os.Stdin.Fd()) {
fd := os.Stdin.Fd() fd := os.Stdin.Fd()
state, err := term.SaveState(fd) state, err := term.SaveState(fd)
if err != nil { if err != nil {
return "", err return "", err
} }
term.DisableEcho(fd, state) if err := term.DisableEcho(fd, state); err != nil {
return "", fmt.Errorf("failed to disable terminal echo for password input: %w", err)
}
defer term.RestoreTerminal(fd, state) defer term.RestoreTerminal(fd, state)
} }
@ -153,7 +156,7 @@ func readLine(prompt string, silent bool) (string, error) {
return "", err return "", err
} }
if silent { if silent {
fmt.Println() fmt.Fprintln(os.Stderr)
} }
return string(line), nil return string(line), nil

Loading…
Cancel
Save