diff --git a/api/client.go b/api/client.go index 683f4b16..9ed71e25 100644 --- a/api/client.go +++ b/api/client.go @@ -27,19 +27,7 @@ func Client(config jira.Config) *jira.Client { if config.Login == "" { config.Login = viper.GetString("login") } - if config.APIToken == "" { - config.APIToken = viper.GetString("api_token") - } - if config.APIToken == "" { - netrcConfig, _ := netrc.Read(config.Server, config.Login) - if netrcConfig != nil { - config.APIToken = netrcConfig.Password - } - } - if config.APIToken == "" { - secret, _ := keyring.Get("jira-cli", config.Login) - config.APIToken = secret - } + config.APIToken = GetAPIToken(config) if config.AuthType == nil { authType := jira.AuthType(viper.GetString("auth_type")) config.AuthType = &authType @@ -70,6 +58,25 @@ func Client(config jira.Config) *jira.Client { return jiraClient } +func GetAPIToken(config jira.Config) string { + if config.APIToken != "" { + return config.APIToken + } + if apiToken := viper.GetString("api_token"); apiToken != "" { + return apiToken + } + + if netrcConfig, _ := netrc.Read(config.Server, config.Login); netrcConfig != nil && netrcConfig.Password != "" { + return netrcConfig.Password + } + + if secret, _ := keyring.Get("jira-cli", config.Login); secret != "" { + return secret + } + + return "" +} + // DefaultClient returns default jira client. func DefaultClient(debug bool) *jira.Client { return Client(jira.Config{Debug: debug}) diff --git a/internal/cmd/root/root.go b/internal/cmd/root/root.go index 7bd95e1b..63e281a6 100644 --- a/internal/cmd/root/root.go +++ b/internal/cmd/root/root.go @@ -8,6 +8,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" + "github.com/ankitpokhrel/jira-cli/api" "github.com/ankitpokhrel/jira-cli/internal/cmd/board" "github.com/ankitpokhrel/jira-cli/internal/cmd/completion" "github.com/ankitpokhrel/jira-cli/internal/cmd/epic" @@ -24,9 +25,6 @@ import ( "github.com/ankitpokhrel/jira-cli/internal/cmdutil" jiraConfig "github.com/ankitpokhrel/jira-cli/internal/config" "github.com/ankitpokhrel/jira-cli/pkg/jira" - "github.com/ankitpokhrel/jira-cli/pkg/netrc" - - "github.com/zalando/go-keyring" ) const ( @@ -157,17 +155,10 @@ func cmdRequireToken(cmd string) bool { } func checkForJiraToken(server string, login string) { - if os.Getenv("JIRA_API_TOKEN") != "" { - return - } - - netrcConfig, _ := netrc.Read(server, login) - if netrcConfig != nil { - return - } - - secret, _ := keyring.Get("jira-cli", login) - if secret != "" { + if api.GetAPIToken(jira.Config{ + Server: server, + Login: login, + }) != "" { return }