aboutsummaryrefslogtreecommitdiffstats
path: root/bridge
diff options
context:
space:
mode:
authorAmine Hilaly <hilalyamine@gmail.com>2019-08-27 00:32:30 +0200
committerAmine Hilaly <hilalyamine@gmail.com>2019-08-31 23:02:20 +0200
commitbe94780315b85e51204e28c41fcad34e507d3d3c (patch)
tree39ad8450cbf5fd8c0f4e0c13f4395da67c77ea26 /bridge
parent77e60aceeac60e02c253a24faba9603c76228e76 (diff)
downloadgit-bug-be94780315b85e51204e28c41fcad34e507d3d3c.tar.gz
bridge/github: recover terminal state in password prompts
commands: error if a token is provide but not the bridge name and target
Diffstat (limited to 'bridge')
-rw-r--r--bridge/github/config.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/bridge/github/config.go b/bridge/github/config.go
index 954bf845..d1b57e10 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)
}
}