func visitFields()

in scripts/generate-docs/exported_fields.go [127:163]


func visitFields(namePrefix string, f *fieldDefinition, records []fieldsTableRecord, disabledField *string) ([]fieldsTableRecord, error) {
	var name = namePrefix
	if namePrefix != "" {
		name += "."
	}
	name += f.Name
	if disabledField != nil && *disabledField != "" && strings.HasPrefix(name, *disabledField) {
		// skipping the field because a top level field was disabled
		return records, nil
	}

	if f.Enabled != nil && *f.Enabled == false {
		// found a new disabled field so use that one from now on
		// this works because all the fields are sorted so the top level fields are encountered first
		*disabledField = name
		return records, nil
	}

	if len(f.Fields) == 0 && f.Type != "group" {
		records = append(records, fieldsTableRecord{
			name:        name,
			description: f.Description,
			aType:       f.Type,
		})
		return records, nil
	}

	var err error
	sort.Sort(f.Fields)
	for _, fieldEntry := range f.Fields {
		records, err = visitFields(name, fieldEntry, records, disabledField)
		if err != nil {
			return nil, errors.Wrapf(err, "recursive visiting fields failed (namePrefix: %s)", namePrefix)
		}
	}
	return records, nil
}