From 10ec7f849e1c80df2454b2dd35140b0625eacadd Mon Sep 17 00:00:00 2001 From: Ben Potter Date: Mon, 5 Apr 2021 09:11:22 -0400 Subject: [PATCH 1/3] switch to scanner for token --- internal/cmd/login.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/internal/cmd/login.go b/internal/cmd/login.go index 27f4584c..fed2950a 100644 --- a/internal/cmd/login.go +++ b/internal/cmd/login.go @@ -4,7 +4,6 @@ import ( "bufio" "context" "fmt" - "io" "net/url" "strings" @@ -73,7 +72,18 @@ func login(cmd *cobra.Command, envURL *url.URL) error { fmt.Printf("Your browser has been opened to visit:\n\n\t%s\n\n", authURL.String()) } - token := readLine("Paste token here: ", cmd.InOrStdin()) + fmt.Print("Paste token here: ") + var token string + + scanner := bufio.NewScanner(cmd.InOrStdin()) + scanner.Scan() + + token = scanner.Text() + + if err := scanner.Err(); err != nil { + return xerrors.Errorf("reading standard input: %w", err) + } + if err := pingAPI(cmd.Context(), envURL, token); err != nil { return xerrors.Errorf("ping API with credentials: %w", err) } @@ -84,13 +94,6 @@ func login(cmd *cobra.Command, envURL *url.URL) error { return nil } -func readLine(prompt string, r io.Reader) string { - reader := bufio.NewReader(r) - fmt.Print(prompt) - text, _ := reader.ReadString('\n') - return strings.TrimSuffix(text, "\n") -} - // pingAPI creates a client from the given url/token and try to exec an api call. // Not using the SDK as we want to verify the url/token pair before storing the config files. func pingAPI(ctx context.Context, envURL *url.URL, token string) error { From 9263163bf435e65ad86cfc5f4d1b32d4063cedf5 Mon Sep 17 00:00:00 2001 From: Ben Potter Date: Mon, 5 Apr 2021 09:49:20 -0400 Subject: [PATCH 2/3] fix spacing --- internal/cmd/login.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/internal/cmd/login.go b/internal/cmd/login.go index fed2950a..95525197 100644 --- a/internal/cmd/login.go +++ b/internal/cmd/login.go @@ -74,12 +74,9 @@ func login(cmd *cobra.Command, envURL *url.URL) error { fmt.Print("Paste token here: ") var token string - scanner := bufio.NewScanner(cmd.InOrStdin()) scanner.Scan() - token = scanner.Text() - if err := scanner.Err(); err != nil { return xerrors.Errorf("reading standard input: %w", err) } From 88d91b0bba60ce67a07ce9f6bdae7e3ce4f517dd Mon Sep 17 00:00:00 2001 From: Ben Potter Date: Mon, 5 Apr 2021 10:10:52 -0400 Subject: [PATCH 3/3] ignore return value from scanner.Scan() --- internal/cmd/login.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/cmd/login.go b/internal/cmd/login.go index 95525197..a23cabfd 100644 --- a/internal/cmd/login.go +++ b/internal/cmd/login.go @@ -75,7 +75,7 @@ func login(cmd *cobra.Command, envURL *url.URL) error { fmt.Print("Paste token here: ") var token string scanner := bufio.NewScanner(cmd.InOrStdin()) - scanner.Scan() + _ = scanner.Scan() token = scanner.Text() if err := scanner.Err(); err != nil { return xerrors.Errorf("reading standard input: %w", err)