A Golang library for prompting a user for passwords and such.
Reading from stdin
and writing to stdout
interferes with a user's ability
to pipe data into or out of a program. This is most evident when doing things
such as prompting a user for a password.
For example, given a program which requests a password from a user and then
proceeds to read the remainder of stdin
as input. If the user then pipes a
file into the program, the first line is read as the password rather than the
user being given an opportunity to enter the correct password.
Instead, this library interacts with the user directly, allowing the user to be
prompted and respond without interfering with stdin
or stdout
.
Use judiciously. While it may be tempting to use this as the only input method for a program, this precludes a user from automating input.
ask.Ask
gets input from the user normally, while ask.HiddenAsk
prevents
echoing of the user's input. ask.Print
is also available to compliment
the ask.Ask*
variants.
import (
"github.com/miquella/ask"
)
func getPassword() (string, error) {
err := ask.Print("Warning! I am about to ask you for a password!\n")
if err != nil {
return "", err
}
return ask.HiddenAsk("Password: ")
}