github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/cli/commands/login/command.go (about) 1 package login 2 3 import ( 4 "github.com/taubyte/tau-cli/cli/common/options" 5 "github.com/taubyte/tau-cli/flags" 6 loginFlags "github.com/taubyte/tau-cli/flags/login" 7 "github.com/taubyte/tau-cli/i18n" 8 loginI18n "github.com/taubyte/tau-cli/i18n/login" 9 loginLib "github.com/taubyte/tau-cli/lib/login" 10 "github.com/taubyte/tau-cli/prompts" 11 loginPrompts "github.com/taubyte/tau-cli/prompts/login" 12 slices "github.com/taubyte/utils/slices/string" 13 "github.com/urfave/cli/v2" 14 ) 15 16 var Command = &cli.Command{ 17 Name: "login", 18 Flags: flags.Combine( 19 flags.Name, 20 loginFlags.Token, 21 loginFlags.Provider, 22 loginFlags.New, 23 loginFlags.SetDefault, 24 ), 25 ArgsUsage: i18n.ArgsUsageName, 26 Action: Run, 27 Before: options.SetNameAsArgs0, 28 } 29 30 func Run(ctx *cli.Context) error { 31 _default, options, err := loginLib.GetProfiles() 32 if err != nil { 33 return loginI18n.GetProfilesFailed(err) 34 } 35 36 // New: if --new or no selectable profiles 37 if ctx.Bool(loginFlags.New.Name) || len(options) == 0 { 38 return New(ctx, options) 39 } 40 41 // Selection 42 var name string 43 if ctx.IsSet(flags.Name.Name) { 44 name = ctx.String(flags.Name.Name) 45 46 if !slices.Contains(options, name) { 47 return loginI18n.DoesNotExistIn(name, options) 48 } 49 } else { 50 name, err = prompts.SelectInterface(options, loginPrompts.SelectAProfile, _default) 51 if err != nil { 52 return err 53 } 54 } 55 56 return Select(ctx, name, ctx.Bool(loginFlags.SetDefault.Name)) 57 }