From 0381400bfda16f910ca87b0258ddda1c1732fbc7 Mon Sep 17 00:00:00 2001 From: Amine Hilaly Date: Wed, 21 Aug 2019 14:24:48 +0200 Subject: commands: read token from stdin in bridge configuration bridge: improve bridge config validation --- commands/bridge_configure.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'commands') diff --git a/commands/bridge_configure.go b/commands/bridge_configure.go index 6bebc262..4cfe0ed5 100644 --- a/commands/bridge_configure.go +++ b/commands/bridge_configure.go @@ -6,10 +6,8 @@ import ( "os" "strconv" "strings" - "syscall" "github.com/spf13/cobra" - "golang.org/x/crypto/ssh/terminal" "github.com/MichaelMure/git-bug/bridge" "github.com/MichaelMure/git-bug/bridge/core" @@ -23,6 +21,7 @@ const ( ) var ( + tokenStdin bool bridgeConfigureName string bridgeConfigureTarget string bridgeParams core.BridgeParams @@ -36,15 +35,6 @@ func runBridgeConfigure(cmd *cobra.Command, args []string) error { defer backend.Close() interrupt.RegisterCleaner(backend.Close) - termState, err := terminal.GetState(int(syscall.Stdin)) - if err != nil { - return err - } - - interrupt.RegisterCleaner(func() error { - return terminal.Restore(int(syscall.Stdin), termState) - }) - if bridgeConfigureTarget == "" { bridgeConfigureTarget, err = promptTarget() if err != nil { @@ -64,6 +54,15 @@ func runBridgeConfigure(cmd *cobra.Command, args []string) error { return err } + if tokenStdin { + reader := bufio.NewReader(os.Stdin) + token, err := reader.ReadString('\n') + if err != nil { + return fmt.Errorf("reading from stdin: %v", err) + } + bridgeParams.Token = strings.TrimSuffix(token, "\n") + } + err = b.Configure(bridgeParams) if err != nil { return err @@ -192,6 +191,7 @@ func init() { bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.URL, "url", "u", "", "The URL of the target repository") bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.Owner, "owner", "o", "", "The owner of the target repository") bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.Token, "token", "T", "", "The authentication token for the API") + bridgeConfigureCmd.Flags().BoolVar(&tokenStdin, "token-stdin", false, "Expect to receive token from stdin and ignore token flag.") bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.Project, "project", "p", "", "The name of the target repository") bridgeConfigureCmd.Flags().SortFlags = false } -- cgit From 65d7ce7c05a458beb306984c6fd3629839872845 Mon Sep 17 00:00:00 2001 From: Amine Date: Fri, 23 Aug 2019 11:09:03 +0200 Subject: commands: enhance flag description MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bridge/github: improve configuration logic Co-Authored-By: Michael Muré --- commands/bridge_configure.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'commands') diff --git a/commands/bridge_configure.go b/commands/bridge_configure.go index 4cfe0ed5..95cff1a2 100644 --- a/commands/bridge_configure.go +++ b/commands/bridge_configure.go @@ -191,7 +191,7 @@ func init() { bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.URL, "url", "u", "", "The URL of the target repository") bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.Owner, "owner", "o", "", "The owner of the target repository") bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.Token, "token", "T", "", "The authentication token for the API") - bridgeConfigureCmd.Flags().BoolVar(&tokenStdin, "token-stdin", false, "Expect to receive token from stdin and ignore token flag.") + bridgeConfigureCmd.Flags().BoolVar(&tokenStdin, "token-stdin", false, "Will read the token from stdin and ignore --token") bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.Project, "project", "p", "", "The name of the target repository") bridgeConfigureCmd.Flags().SortFlags = false } -- cgit From be94780315b85e51204e28c41fcad34e507d3d3c Mon Sep 17 00:00:00 2001 From: Amine Hilaly Date: Tue, 27 Aug 2019 00:32:30 +0200 Subject: bridge/github: recover terminal state in password prompts commands: error if a token is provide but not the bridge name and target --- commands/bridge_configure.go | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'commands') diff --git a/commands/bridge_configure.go b/commands/bridge_configure.go index 95cff1a2..bb32c84e 100644 --- a/commands/bridge_configure.go +++ b/commands/bridge_configure.go @@ -35,6 +35,10 @@ func runBridgeConfigure(cmd *cobra.Command, args []string) error { defer backend.Close() interrupt.RegisterCleaner(backend.Close) + if (tokenStdin || bridgeParams.Token != "") && (bridgeConfigureName == "" || bridgeConfigureTarget == "") { + return fmt.Errorf("you must bridge name and target to configure a bridge with a token") + } + if bridgeConfigureTarget == "" { bridgeConfigureTarget, err = promptTarget() if err != nil { -- cgit From f3d8da10750d58fce482042cff87455a1e6f36e0 Mon Sep 17 00:00:00 2001 From: Amine Hilaly Date: Mon, 2 Sep 2019 09:24:53 +0200 Subject: bridge/core: add tokenStdin field to bridgeParams commands: move tokenStdin handling logic to bridge.Configure --- commands/bridge_configure.go | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) (limited to 'commands') diff --git a/commands/bridge_configure.go b/commands/bridge_configure.go index bb32c84e..12cc35e3 100644 --- a/commands/bridge_configure.go +++ b/commands/bridge_configure.go @@ -21,7 +21,6 @@ const ( ) var ( - tokenStdin bool bridgeConfigureName string bridgeConfigureTarget string bridgeParams core.BridgeParams @@ -35,8 +34,8 @@ func runBridgeConfigure(cmd *cobra.Command, args []string) error { defer backend.Close() interrupt.RegisterCleaner(backend.Close) - if (tokenStdin || bridgeParams.Token != "") && (bridgeConfigureName == "" || bridgeConfigureTarget == "") { - return fmt.Errorf("you must bridge name and target to configure a bridge with a token") + if (bridgeParams.TokenStdin || bridgeParams.Token != "") && (bridgeConfigureName == "" || bridgeConfigureTarget == "") { + return fmt.Errorf("you must provide a bridge name and target to configure a bridge with a token") } if bridgeConfigureTarget == "" { @@ -58,15 +57,6 @@ func runBridgeConfigure(cmd *cobra.Command, args []string) error { return err } - if tokenStdin { - reader := bufio.NewReader(os.Stdin) - token, err := reader.ReadString('\n') - if err != nil { - return fmt.Errorf("reading from stdin: %v", err) - } - bridgeParams.Token = strings.TrimSuffix(token, "\n") - } - err = b.Configure(bridgeParams) if err != nil { return err @@ -195,7 +185,7 @@ func init() { bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.URL, "url", "u", "", "The URL of the target repository") bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.Owner, "owner", "o", "", "The owner of the target repository") bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.Token, "token", "T", "", "The authentication token for the API") - bridgeConfigureCmd.Flags().BoolVar(&tokenStdin, "token-stdin", false, "Will read the token from stdin and ignore --token") + bridgeConfigureCmd.Flags().BoolVar(&bridgeParams.TokenStdin, "token-stdin", false, "Will read the token from stdin and ignore --token") bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.Project, "project", "p", "", "The name of the target repository") bridgeConfigureCmd.Flags().SortFlags = false } -- cgit