summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/vendor/github.com/bgentry/speakeasy/speakeasy.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/vendor/github.com/bgentry/speakeasy/speakeasy.go')
-rw-r--r--vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/vendor/github.com/bgentry/speakeasy/speakeasy.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/vendor/github.com/bgentry/speakeasy/speakeasy.go b/vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/vendor/github.com/bgentry/speakeasy/speakeasy.go
new file mode 100644
index 000000000..71c1dd1b9
--- /dev/null
+++ b/vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/vendor/github.com/bgentry/speakeasy/speakeasy.go
@@ -0,0 +1,49 @@
+package speakeasy
+
+import (
+ "fmt"
+ "io"
+ "os"
+ "strings"
+)
+
+// Ask the user to enter a password with input hidden. prompt is a string to
+// display before the user's input. Returns the provided password, or an error
+// if the command failed.
+func Ask(prompt string) (password string, err error) {
+ return FAsk(os.Stdout, prompt)
+}
+
+// FAsk is the same as Ask, except it is possible to specify the file to write
+// the prompt to. If 'nil' is passed as the writer, no prompt will be written.
+func FAsk(wr io.Writer, prompt string) (password string, err error) {
+ if wr != nil && prompt != "" {
+ fmt.Fprint(wr, prompt) // Display the prompt.
+ }
+ password, err = getPassword()
+
+ // Carriage return after the user input.
+ if wr != nil {
+ fmt.Fprintln(wr, "")
+ }
+ return
+}
+
+func readline() (value string, err error) {
+ var valb []byte
+ var n int
+ b := make([]byte, 1)
+ for {
+ // read one byte at a time so we don't accidentally read extra bytes
+ n, err = os.Stdin.Read(b)
+ if err != nil && err != io.EOF {
+ return "", err
+ }
+ if n == 0 || b[0] == '\n' {
+ break
+ }
+ valb = append(valb, b[0])
+ }
+
+ return strings.TrimSuffix(string(valb), "\r"), nil
+}