func()

in hgctl/pkg/plugin/types/schema.go [217:283]


func (s *JSONSchemaProps) HandleFieldTags(tags string, parent *JSONSchemaProps, fieldName string) string {
	if tags == "" {
		return fieldName
	}
	st, err := structtag.Parse(tags)
	if err != nil {
		return fieldName
	}

	newName := fieldName
	for _, tag := range st.Tags() {
		switch tag.Key {
		case "yaml":
			newName = tag.Name
			if s.Title == "" {
				s.Title = newName
				s.XTitleI18n[I18nDefault] = newName
			}
		case "required":
			required, _ := strconv.ParseBool(tag.Name)
			if !required {
				continue
			}
			parent.Required = append(parent.Required, newName)
		case "minimum":
			min, err := strconv.ParseFloat(tag.Name, 64)
			if err != nil {
				continue
			}
			s.Minimum = &min
		case "maximum":
			max, err := strconv.ParseFloat(tag.Name, 64)
			if err != nil {
				continue
			}
			s.Maximum = &max
		case "minLength":
			minL, err := strconv.ParseInt(tag.Name, 10, 64)
			if err != nil {
				continue
			}
			s.MinLength = &minL
		case "maxLength":
			maxL, err := strconv.ParseInt(tag.Name, 10, 64)
			if err != nil {
				continue
			}
			s.MaxLength = &maxL
		case "minItems":
			minI, err := strconv.ParseInt(tag.Name, 10, 64)
			if err != nil {
				continue
			}
			s.MinItems = &minI
		case "maxItems":
			maxI, err := strconv.ParseInt(tag.Name, 10, 64)
			if err != nil {
				continue
			}
			s.MaxItems = &maxI
		case "pattern":
			s.Pattern = tag.Name
		}
	}

	return newName
}