package main import ( "encoding/json" "fmt" "log" "slices" "golang.org/x/text/collate" "golang.org/x/text/language" "github.com/edavis/recordcollector/pkg" ) type Locale struct { Lang string `json:"lang"` Name string `json:"name"` Description string `json:"description"` } type Definition struct { Blurs string `json:"blurs"` Severity string `json:"severity"` AdultOnly bool `json:"adultOnly"` Identifier string `json:"identifier"` DefaultSetting string `json:"defaultSetting"` Locales []Locale `json:"locales"` } type Document struct { Values []string `json:"labelValues"` Definitions []Definition `json:"labelValueDefinitions"` } func main() { var values []string var defs []Definition col := collate.New(language.English) slices.SortFunc(pkg.Applications, func(a, b pkg.Application) int { return col.CompareString(a.Name, b.Name) }) for _, app := range pkg.Applications { values = append(values, app.Label) defs = append(defs, Definition{ Blurs: "none", Severity: "inform", AdultOnly: false, Identifier: app.Label, DefaultSetting: "warn", Locales: []Locale{ { Lang: "en", Name: app.Name, Description: fmt.Sprintf("%s (%s.*)", app.Description, app.NSID), }, }, }) } doc := Document{ Values: values, Definitions: defs, } out, err := json.Marshal(doc) if err != nil { log.Fatalln("error creating JSON") } fmt.Println(string(out)) }