in tools/go-agent/tools/flags.go [29:57]
func ParseFlags(result interface{}, args []string) (noOpIndex int, err error) {
if len(args) == 0 {
return 0, fmt.Errorf("no args")
}
flags := parseFlagsFromStruct(result)
if len(flags) == 0 {
return 0, nil
}
i := 0
firstNonOptionIndex := -1
for i < len(args)-1 {
shift, isOption := parseFlag(flags, args[i], args[i+1])
if !isOption && firstNonOptionIndex == -1 {
firstNonOptionIndex = i
}
i += shift
}
if i < len(args) {
parseFlag(flags, args[i], "")
}
// process the all args flag
if v, exist := flags["all-args"]; exist {
v.Set(reflect.ValueOf(args))
}
return firstNonOptionIndex, nil
}