diff --git a/internal/auth/auth.go b/internal/auth/auth.go index 82b40c6..9b7c7a9 100644 --- a/internal/auth/auth.go +++ b/internal/auth/auth.go @@ -12,10 +12,17 @@ import ( "time" ) -func SaveJWT() error { - jwt, err := utils.GetInput("Enter your Pinata JWT") - if err != nil { - return err +func SaveJWT(useDefault bool, token string) error { + var jwt string + var err error + + if token != "" { + jwt = token + } else { + jwt, err = utils.GetInput("Enter your Pinata JWT") + if err != nil { + return err + } } if jwt == "" { @@ -54,7 +61,7 @@ func SaveJWT() error { } fmt.Println("Authentication Successful!") - err = gateways.SetGateway("") + err = gateways.SetGateway("", useDefault) if err != nil { return err } diff --git a/internal/gateways/gateways.go b/internal/gateways/gateways.go index b4f18d1..a792954 100644 --- a/internal/gateways/gateways.go +++ b/internal/gateways/gateways.go @@ -35,7 +35,7 @@ func FindGatewayDomain() ([]byte, error) { return Domain, err } -func SetGateway(domain string) error { +func SetGateway(domain string, useDefault bool) error { if domain == "" { jwt, err := common.FindToken() if err != nil { @@ -71,11 +71,21 @@ func SetGateway(domain string) error { for i, item := range response.Data.Rows { options[i] = item.Domain + ".mypinata.cloud" } - domain, err := utils.MultiSelect(options) - if err != nil { - fmt.Println("Error:", err) - return nil + + if useDefault { + if len(options) == 0 { + return errors.New("no gateways available") + } + domain = options[0] + fmt.Printf("Using default gateway: %s\n", domain) + } else { + domain, err = utils.MultiSelect(options) + if err != nil { + fmt.Println("Error:", err) + return nil + } } + home, err := os.UserHomeDir() if err != nil { return err diff --git a/main.go b/main.go index 012a217..7acef77 100644 --- a/main.go +++ b/main.go @@ -29,8 +29,24 @@ func main() { Aliases: []string{"a"}, Usage: "Authorize the CLI with your Pinata JWT", ArgsUsage: "[your Pinata JWT]", + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "token", + Aliases: []string{"t"}, + Value: "", + Usage: "Pinata JWT token (skips interactive input)", + }, + &cli.BoolFlag{ + Name: "default", + Aliases: []string{"d"}, + Value: false, + Usage: "Automatically select the first gateway without prompting", + }, + }, Action: func(ctx *cli.Context) error { - err := auth.SaveJWT() + token := ctx.String("token") + useDefault := ctx.Bool("default") + err := auth.SaveJWT(useDefault, token) return err }, }, @@ -505,7 +521,7 @@ func main() { ArgsUsage: "[domain of the gateway]", Action: func(ctx *cli.Context) error { domain := ctx.Args().First() - err := gateways.SetGateway(domain) + err := gateways.SetGateway(domain, false) return err }, },