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  }