MCPcopy Index your code
hub / github.com/cloudfoundry/cli / Parse

Method Parse

cf/flags/flags.go:65–132  ·  view source on GitHub ↗
(args ...string)

Source from the content-addressed store, hash-verified

63}
64
65func (c *flagContext) Parse(args ...string) error {
66 c.setDefaultFlagValueIfAny()
67
68 for c.cursor <= len(args)-1 {
69 arg := args[c.cursor]
70
71 if !c.skipFlagParsing && (strings.HasPrefix(arg, "-") || strings.HasPrefix(arg, "--")) {
72 flg := strings.TrimLeft(strings.TrimLeft(arg, "-"), "-")
73
74 c.extractEqualSignIfAny(&flg, &args)
75
76 flagset, ok := c.cmdFlags[flg]
77 if !ok {
78 flg = c.getFlagNameWithShortName(flg)
79 if flagset, ok = c.cmdFlags[flg]; !ok {
80 return errors.New("Invalid flag: " + arg)
81 }
82 }
83
84 switch flagset.GetValue().(type) {
85 case bool:
86 c.flagsets[flg] = &BoolFlag{Name: flg, Value: c.getBoolFlagValue(args)}
87 case int:
88 v, err := c.getFlagValue(args)
89 if err != nil {
90 return err
91 }
92 i, err := strconv.ParseInt(v, 10, 32)
93 if err != nil {
94 return errors.New("Value for flag '" + flg + "' must be an integer")
95 }
96 c.flagsets[flg] = &IntFlag{Name: flg, Value: int(i)}
97 case float64:
98 v, err := c.getFlagValue(args)
99 if err != nil {
100 return err
101 }
102 i, err := strconv.ParseFloat(v, 64)
103 if err != nil {
104 return errors.New("Value for flag '" + flg + "' must be a float64")
105 }
106 c.flagsets[flg] = &Float64Flag{Name: flg, Value: float64(i)}
107 case string:
108 v, err := c.getFlagValue(args)
109 if err != nil {
110 return err
111 }
112 c.flagsets[flg] = &StringFlag{Name: flg, Value: v}
113 case []string:
114 v, err := c.getFlagValue(args)
115 if err != nil {
116 return err
117 }
118 if _, ok = c.flagsets[flg]; !ok {
119 c.flagsets[flg] = &StringSliceFlag{Name: flg, Value: []string{v}}
120 } else {
121 c.flagsets[flg].Set(v)
122 }

Callers

nothing calls this directly

Calls 7

extractEqualSignIfAnyMethod · 0.95
getBoolFlagValueMethod · 0.95
getFlagValueMethod · 0.95
GetValueMethod · 0.65
SetMethod · 0.65

Tested by

no test coverage detected