package app import ( "embed" "path/filepath" "slices" "gopkg.in/yaml.v3" ) //go:embed embeded/data/*.yaml var dataFS embed.FS const dataEmbedPath = "embeded/data" type FFJob struct { Name string `yaml:"name"` Role string `yaml:"role"` Limited bool `yaml:"limited"` } type FFWorld struct { Name string `yaml:"name"` Region string `yaml:"region"` DataCenter string `yaml:"data_center"` } func getData(name string) ([]map[string]any, error) { out := make([]map[string]any, 0) raw, err := dataFS.ReadFile(filepath.Join(dataEmbedPath, name+".yaml")) if err != nil { return out, err } return out, yaml.Unmarshal(raw, &out) } func getFormChoices(name string) ([]string, error) { data, err := getData(name) out := make([]string, 0) if err != nil { return nil, err } for _, item := range data { switch name := item["name"].(type) { case string: out = append(out, name) } } slices.Sort(out) return out, nil }