aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/login.go29
1 files changed, 26 insertions, 3 deletions
diff --git a/cmd/login.go b/cmd/login.go
index 39bc7d4..92a4c92 100644
--- a/cmd/login.go
+++ b/cmd/login.go
@@ -22,6 +22,7 @@ import (
"os"
"fmt"
"github.com/spf13/cobra"
+ "github.com/spf13/viper"
"github.com/MikunoNaka/macli/auth"
)
@@ -42,17 +43,38 @@ var loginCmd = &cobra.Command {
Run: func(cmd *cobra.Command, args []string) {
var storeClientId bool
- s, _ := cmd.Flags().GetString("store-client-id")
+ var err error
+ if cmd.Flags().Lookup("no-sys-keyring").Changed {
+ auth.NoSysKeyring, err = cmd.Flags().GetBool("no-sys-keyring")
+ if err != nil {
+ fmt.Println("Error reading \x1b[33m`--no-sys-keyring`\x1b[0m flag:", err.Error())
+ }
+ } else {
+ auth.NoSysKeyring = viper.GetBool("auth.no_system_keyring")
+ }
+
+ var s, errmsg string
+ if cmd.Flags().Lookup("store-client-id").Changed {
+ s, _ = cmd.Flags().GetString("store-client-id")
+ errmsg = "\x1b[33m`--store-client-id`\x1b[0m flag only accepts \x1b[33m\"yes\"\x1b[0m or \x1b[33m\"no\"\x1b[0m"
+ } else {
+ s = viper.GetString("auth.save_client_id")
+ errmsg = fmt.Sprintf("%s: \x1b[33m`auth.save_client_id`\x1b[0m option only accepts \x1b[33m\"yes\"\x1b[0m or \x1b[33m\"no\"\x1b[0m", viper.ConfigFileUsed())
+ }
switch s {
- case "yes":
+ case "yes", "":
storeClientId = true
case "no":
storeClientId = false
default:
- fmt.Println("\x1b[33m`--store-client-id`\x1b[0m flag only accepts \x1b[33m\"yes\"\x1b[0m or \x1b[33m\"no\"\x1b[0m")
+ fmt.Println(errmsg)
os.Exit(1)
}
+ if auth.NoSysKeyring {
+ viper.WriteConfigAs(viper.ConfigFileUsed())
+ }
+
tk, _ := cmd.Flags().GetString("authentication-token")
clientId, _ := cmd.Flags().GetString("client-id")
@@ -65,4 +87,5 @@ func init() {
loginCmd.Flags().StringP("authentication-token", "t", "", "MyAnimeList authentication token to use (overrides system keyring if any)")
loginCmd.Flags().StringP("client-id", "c", "", "MyAnimeList Client ID")
loginCmd.Flags().StringP("store-client-id", "s", "yes", "Save Client ID to keyring")
+ loginCmd.Flags().BoolP("no-sys-keyring", "k", false, "Don't use system keyring to store login info")
}