diff --git a/bridge/github/config.go b/bridge/github/config.go index 954bf845ea798bbedd9c48143e701e6dc76e9711..d1b57e10a3e2b74634f8002c065b1fd148028851 100644 --- a/bridge/github/config.go +++ b/bridge/github/config.go @@ -21,6 +21,7 @@ import ( "github.com/MichaelMure/git-bug/bridge/core" "github.com/MichaelMure/git-bug/repository" + "github.com/MichaelMure/git-bug/util/interrupt" ) const ( @@ -236,6 +237,16 @@ func promptTokenOptions(owner, project string) (string, error) { return promptToken() } + // Register restore state cleaner before prompting passwords inputs + termState, err := terminal.GetState(int(syscall.Stdin)) + if err != nil { + return "", err + } + + interrupt.RegisterCleaner(func() error { + return terminal.Restore(int(syscall.Stdin), termState) + }) + return loginAndRequestToken(owner, project) } } diff --git a/commands/bridge_configure.go b/commands/bridge_configure.go index 95cff1a2bccce8f47100c05fe03904b5cbdc0f23..bb32c84e58dd6e0083b33a8942183004d82150fc 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 {