func getFlagsForValue()

in struct_field.go [140:160]


func getFlagsForValue(value reflect.Value, ns []string) []cli.Flag {
	var flags []cli.Flag

	if value.Type().Kind() == reflect.Ptr && value.Type().Elem().Kind() == reflect.Struct {
		if value.IsNil() {
			value.Set(reflect.New(value.Type().Elem()))
		}

		value = reflect.Indirect(value)
	} else if value.Type().Kind() != reflect.Struct {
		return []cli.Flag{}
	}

	valueType := value.Type()
	for i := 0; i < valueType.NumField(); i++ {
		newFlags := getFlagsForStructField(valueType.Field(i), value.Field(i), ns)
		flags = append(flags, newFlags...)
	}

	return flags
}