pull/32393/merge
Mukul Negi 1 day ago committed by GitHub
commit 1086df29cc
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
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
// into one there (e.g., Windows)
pw, err := term.ReadPassword(int(syscall.Stdin))
fmt.Println()
fmt.Fprintln(os.Stderr)
return pw, err
}

@ -172,9 +172,10 @@ func (o *pluginPackageOptions) run(out io.Writer) 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))
fmt.Println()
fmt.Fprintln(os.Stderr)
return pw, err
}

@ -136,14 +136,17 @@ func getUsernamePassword(usernameOpt string, passwordOpt string, passwordFromStd
// Copied/adapted from https://github.com/oras-project/oras
func readLine(prompt string, silent bool) (string, error) {
fmt.Print(prompt)
if silent {
// Prompts go to stderr so stdout stays clean for scripting.
fmt.Fprint(os.Stderr, prompt)
if silent && term.IsTerminal(os.Stdin.Fd()) {
fd := os.Stdin.Fd()
state, err := term.SaveState(fd)
if err != nil {
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)
}
@ -153,7 +156,7 @@ func readLine(prompt string, silent bool) (string, error) {
return "", err
}
if silent {
fmt.Println()
fmt.Fprintln(os.Stderr)
}
return string(line), nil

Loading…
Cancel
Save