func getFlagsForStructField()

in struct_field.go [106:138]


func getFlagsForStructField(field reflect.StructField, fieldValue reflect.Value, ns []string) []cli.Flag {
	if !fieldValue.IsValid() {
		return []cli.Flag{}
	}

	switch field.Type.Kind() {
	case reflect.Struct:
		if newNs := field.Tag.Get("namespace"); newNs != "" {
			return getFlagsForValue(fieldValue, append(ns, newNs))
		} else if field.Anonymous {
			return getFlagsForValue(fieldValue, ns)
		}
		break
	case reflect.Ptr:
		if field.Type.Elem().Kind() == reflect.Struct {
			if newNs := field.Tag.Get("namespace"); newNs != "" {
				return getFlagsForValue(fieldValue, append(ns, newNs))
			}
		} else {
			return getStructFieldFlag(field, fieldValue, ns)
		}
		break
	case reflect.Chan:
	case reflect.Func:
	case reflect.Interface:
	case reflect.UnsafePointer:
		break
	default:
		return getStructFieldFlag(field, fieldValue, ns)
	}

	return []cli.Flag{}
}