MCPcopy Index your code
hub / github.com/dagger/dagger / AddFlag

Method AddFlag

cmd/dagger/flags.go:642–844  ·  view source on GitHub ↗

AddFlag adds a flag appropriate for the argument type. Should return a pointer to the value. nolint:gocyclo

(flags *pflag.FlagSet)

Source from the content-addressed store, hash-verified

640//
641//nolint:gocyclo
642func (r *modFunctionArg) AddFlag(flags *pflag.FlagSet) error {
643 name := r.FlagName()
644 usage := r.Description
645
646 if flags.Lookup(name) != nil {
647 return fmt.Errorf("flag already exists: %s", name)
648 }
649
650 switch r.TypeDef.Kind {
651 case dagger.TypeDefKindStringKind:
652 val, _ := getDefaultValue[string](r)
653 flags.String(name, val, usage)
654 return nil
655
656 case dagger.TypeDefKindIntegerKind:
657 val, _ := getDefaultValue[int](r)
658 flags.Int(name, val, usage)
659 return nil
660
661 case dagger.TypeDefKindFloatKind:
662 val, _ := getDefaultValue[float64](r)
663 flags.Float64(name, val, usage)
664 return nil
665
666 case dagger.TypeDefKindBooleanKind:
667 val, _ := getDefaultValue[bool](r)
668 flags.Bool(name, val, usage)
669 return nil
670
671 case dagger.TypeDefKindScalarKind:
672 scalarName := r.TypeDef.AsScalar.Name
673 defVal, _ := getDefaultValue[string](r)
674
675 if val := GetCustomFlagValue(scalarName); val != nil {
676 if defVal != "" {
677 val.Set(defVal)
678 }
679 flags.Var(val, name, usage)
680 return nil
681 }
682
683 flags.String(name, defVal, usage)
684 return nil
685
686 case dagger.TypeDefKindEnumKind:
687 enumName := r.TypeDef.AsEnum.Name
688 defVal, _ := getDefaultValue[string](r)
689
690 if val := GetCustomFlagValue(enumName); val != nil {
691 if defVal != "" {
692 val.Set(defVal)
693 }
694 flags.Var(val, name, usage)
695 return nil
696 }
697
698 val := newEnumValue(r.TypeDef.AsEnum, defVal)
699 flags.Var(val, name, usage)

Callers 7

IsUnsupportedFlagMethod · 0.95
parseArgumentValuesMethod · 0.80
CommandMethod · 0.80
addFlagsForFunctionMethod · 0.80
sortRequiredFlagsFunction · 0.80
groupFlagsFunction · 0.80

Calls 12

FlagNameMethod · 0.95
GetCustomFlagValueFunction · 0.85
newEnumValueFunction · 0.85
GetCustomFlagValueSliceFunction · 0.85
newEnumSliceValueFunction · 0.85
Float64Method · 0.80
StringMethod · 0.65
IntMethod · 0.65
BoolMethod · 0.65
SetMethod · 0.65
IsCoreMethod · 0.65
LookupMethod · 0.45

Tested by

no test coverage detected