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
}