mirror of
https://github.com/rclone/rclone.git
synced 2024-12-02 13:34:02 +08:00
66e8c1600e
This makes rclone with encrypted config better suited for use in pipelines. E.g.: $ rclone lsl mydrive:Some/Dir | sort -k 4 If the password prompt ("Enter configuration password") is printed to stdout, it will be swallowed by sort. By printing it to stderr, you still see the prompt, without sacrificing compatibility with the unix pipeline.
27 lines
607 B
Go
27 lines
607 B
Go
// ReadPassword for OSes which are supported by golang.org/x/crypto/ssh/terminal
|
|
// See https://github.com/golang/go/issues/14441 - plan9
|
|
// https://github.com/golang/go/issues/13085 - solaris
|
|
|
|
// +build !solaris,!plan9
|
|
|
|
package fs
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
|
|
"golang.org/x/crypto/ssh/terminal"
|
|
)
|
|
|
|
// ReadPassword reads a password without echoing it to the terminal.
|
|
func ReadPassword() string {
|
|
line, err := terminal.ReadPassword(int(os.Stdin.Fd()))
|
|
fmt.Fprintln(os.Stderr)
|
|
if err != nil {
|
|
log.Fatalf("Failed to read password: %v", err)
|
|
}
|
|
return strings.TrimSpace(string(line))
|
|
}
|