Skip to content

Commit

Permalink
plugin: add request-public public prompt
Browse files Browse the repository at this point in the history
  • Loading branch information
Thibault committed Aug 8, 2023
1 parent 6ad4560 commit 0a86be6
Showing 1 changed file with 27 additions and 2 deletions.
29 changes: 27 additions & 2 deletions cmd/age/tui.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,25 @@ func readSecret(prompt string) (s []byte, err error) {
return
}

// readPublic reads a value from the terminal. The prompt is ephemeral.
func readPublic(prompt string) (s []byte, err error) {
err = withTerminal(func(in, out *os.File) error {
fmt.Fprintf(out, "%s ", prompt)
defer clearLine(out)
oldState, err := term.MakeRaw(int(in.Fd()))
if err != nil {
return err
}
defer term.Restore(int(in.Fd()), oldState)

t := term.NewTerminal(in, "")
line, err := t.ReadLine()
s = []byte(line)
return err
})
return
}

// readCharacter reads a single character from the terminal with no echo. The
// prompt is ephemeral.
func readCharacter(prompt string) (c byte, err error) {
Expand Down Expand Up @@ -159,13 +178,19 @@ var pluginTerminalUI = &plugin.ClientUI{
printf("%s plugin: %s", name, message)
return nil
},
RequestValue: func(name, message string, _ bool) (s string, err error) {
RequestValue: func(name, message string, isSecret bool) (s string, err error) {
defer func() {
if err != nil {
warningf("could not read value for age-plugin-%s: %v", name, err)
}
}()
secret, err := readSecret(message)
var reader func(string) ([]byte, error)
if isSecret {
reader = readSecret
} else {
reader = readPublic
}
secret, err := reader(message)
if err != nil {
return "", err
}
Expand Down

0 comments on commit 0a86be6

Please sign in to comment.