返回 DeepSeek-Reasonix
secret_input.go
根目录 / internal / cli / secret_input.go
1 package cli
2
3 import (
4 "bufio"
5 "fmt"
6 "io"
7 "os"
8 "strings"
9
10 "golang.org/x/term"
11 )
12
13 func askSecret(in *bufio.Scanner, w io.Writer, label string) string {
14 interactive := isTTY(os.Stdin)
15 return askSecretWith(in, w, label, interactive, func() ([]byte, error) {
16 return term.ReadPassword(int(os.Stdin.Fd()))
17 })
18 }
19
20 func askSecretWith(in *bufio.Scanner, w io.Writer, label string, interactive bool, readPassword func() ([]byte, error)) string {
21 fmt.Fprintf(w, "%s: ", label)
22 if interactive {
23 value, err := readPassword()
24 fmt.Fprintln(w)
25 if err != nil {
26 return ""
27 }
28 return string(value)
29 }
30 if !in.Scan() {
31 return ""
32 }
33 return strings.TrimSpace(in.Text())
34 }
35
35 lines GO