github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/cli/common/options/name.go (about) 1 package options 2 3 import ( 4 "fmt" 5 6 "github.com/taubyte/tau-cli/cli/common" 7 "github.com/taubyte/tau-cli/flags" 8 "github.com/taubyte/tau-cli/i18n" 9 "github.com/urfave/cli/v2" 10 ) 11 12 func SetFlagAsArgs0(flag string) func(ctx *cli.Context) error { 13 return func(ctx *cli.Context) error { 14 first := ctx.Args().First() 15 if len(first) == 0 { 16 return nil 17 } 18 19 return ctx.Set(flag, first) 20 } 21 } 22 23 func FlagArg0(flag string) common.Option { 24 return func(l common.Linker) { 25 // Insert name flag into first position 26 l.Flags().Shift(flags.Name) 27 l.Before().Shift(SetFlagAsArgs0(flag)) 28 } 29 } 30 31 func SetNameAsArgs0(ctx *cli.Context) error { 32 first := ctx.Args().First() 33 if len(first) == 0 { 34 return nil 35 } 36 37 return ctx.Set(flags.Name.Name, first) 38 } 39 40 func NameFlagArg0() common.Option { 41 return func(l common.Linker) { 42 // Insert name flag into first position 43 l.Flags().Shift(flags.Name) 44 l.Before().Shift(SetNameAsArgs0) 45 } 46 } 47 48 func NameFlagSelectedArg0(selected string) common.Option { 49 return func(l common.Linker) { 50 NameFlagArg0()(l) 51 52 parentName := l.Parent().Name 53 54 if parentName != "new" && parentName != "select" { 55 l.Raw().ArgsUsage = fmt.Sprintf(i18n.ArgsUsageNameDefaultSelected, selected) 56 l.Raw().Flags[0] = &cli.StringFlag{ 57 Name: flags.Name.Name, 58 Aliases: flags.Name.Aliases, 59 Usage: "Will default to selected", 60 DefaultText: selected, 61 } 62 } 63 } 64 }