From 85298e94f584214b84664c1059057657c54c1bda Mon Sep 17 00:00:00 2001 From: Cory Bennett Date: Mon, 24 Apr 2017 10:50:30 -0700 Subject: [PATCH] work around `github.com/tmc/keyring` compile error for windows --- keyring.go | 13 +++++++++++++ keyring_windows.go | 11 +++++++++++ password.go | 9 ++++++--- 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 keyring.go create mode 100644 keyring_windows.go diff --git a/keyring.go b/keyring.go new file mode 100644 index 00000000..13baf5ad --- /dev/null +++ b/keyring.go @@ -0,0 +1,13 @@ +// +build !windows + +package jira + +import "github.com/tmc/keyring" + +func keyringGet(user string) (string, error) { + return keyring.Get("go-jira", user) +} + +func keyringSet(user, passwd string) error { + return keyring.Set("go-jira", user, passwd) +} diff --git a/keyring_windows.go b/keyring_windows.go new file mode 100644 index 00000000..8be43682 --- /dev/null +++ b/keyring_windows.go @@ -0,0 +1,11 @@ +package jira + +import "fmt" + +func keyringGet(user string) (string, error) { + return "", fmt.Errorf("Keyring is not supported for Windows, see: https://github.com/tmc/keyring") +} + +func keyringSet(user, passwd string) error { + return fmt.Errorf("Keyring is not supported for Windows, see: https://github.com/tmc/keyring") +} diff --git a/password.go b/password.go index 37f55724..a0ea2425 100644 --- a/password.go +++ b/password.go @@ -7,14 +7,17 @@ import ( "strings" "github.com/howeyc/gopass" - "github.com/tmc/keyring" ) func (c *Cli) GetPass(user string) string { passwd := "" if source, ok := c.opts["password-source"].(string); ok { if source == "keyring" { - passwd, _ = keyring.Get("go-jira", user) + var err error + passwd, err = keyringGet(user) + if err != nil { + panic(err) + } } else if source == "pass" { if bin, err := exec.LookPath("pass"); err == nil { buf := bytes.NewBufferString("") @@ -48,7 +51,7 @@ func (c *Cli) SetPass(user, passwd string) error { log.Debugf("password-source: %s", source) if source == "keyring" { // save password in keychain so that it can be used for subsequent http requests - err := keyring.Set("go-jira", user, passwd) + err := keyringSet(user, passwd) if err != nil { log.Errorf("Failed to set password in keyring: %s", err) return err