github.com/rclone/rclone@v1.66.1-0.20240517100346-7b89735ae726/fs/config/config_read_password.go (about)

     1  // ReadPassword for OSes which are supported by golang.org/x/term
     2  // See https://github.com/golang/go/issues/14441 - plan9
     3  
     4  //go:build !plan9
     5  
     6  package config
     7  
     8  import (
     9  	"fmt"
    10  	"log"
    11  	"os"
    12  
    13  	"github.com/rclone/rclone/lib/terminal"
    14  )
    15  
    16  // ReadPassword reads a password without echoing it to the terminal.
    17  func ReadPassword() string {
    18  	stdin := int(os.Stdin.Fd())
    19  	if !terminal.IsTerminal(stdin) {
    20  		return ReadLine()
    21  	}
    22  	line, err := terminal.ReadPassword(stdin)
    23  	_, _ = fmt.Fprintln(os.Stderr)
    24  	if err != nil {
    25  		log.Fatalf("Failed to read password: %v", err)
    26  	}
    27  	return string(line)
    28  }