package grouptasks import ( "encoding/json" "os" "github.com/rs/zerolog/log" ) var CategoryGroups []CategoryGroup type CategoryGroup struct { Category string `json:"category"` Groups []Group `json:"groups"` } func addCategoryGroup(group Group) { for index, categoryGroup := range CategoryGroups { if categoryGroup.Category == group.Category { CategoryGroups[index].Groups = append(CategoryGroups[index].Groups, group) return } } categoryGroup := CategoryGroup{ Category: group.Category, } categoryGroup.Groups = append(categoryGroup.Groups, group) CategoryGroups = append(CategoryGroups, categoryGroup) } type Group struct { Category string `json:"category"` Id string `json:"id"` Name string `json:"name"` GlobalInputs []GlobalInputs `json:"globalInputs"` Tasks []Task `json:"tasks"` } type GlobalInputs struct { ParameterName string `json:"parameterName"` Type string `json:"type"` DisplayName string `json:"displayName"` } type Task struct { Name string `json:"name"` OnFinish string `json:"onFinish"` UndoPossible bool `json:"undoPossible"` ScriptPath string `json:"scriptPath"` Parameter []TaskParameter `json:"parameter"` Feedback string `json:"feedback"` } type TaskParameter struct { ParameterName string `json:"parameterName"` Type string `json:"type"` DisplayName string `json:"displayName"` Global bool `json:"global"` } func ReadGroups() { root := "./groupTasks/groups/" entries, err := os.ReadDir(root) if err != nil { log.Error().Msg("Failed to read groups directory, error: " + err.Error()) return } for _, entry := range entries { log.Info().Msgf("Entry: %s", entry.Name()) files, err := os.ReadDir(root + entry.Name()) if err != nil { log.Error().Msg("Failed to read groups directory files, error: " + err.Error()) return } for _, file := range files { log.Info().Msgf("File: %s", file.Name()) if file.Name() == "index.json" { content, err := os.ReadFile(root + entry.Name() + "/index.json") if err != nil { log.Error().Msg("Failed to read file content, error: " + err.Error()) return } var group Group json.Unmarshal(content, &group) group.Id = entry.Name() log.Info().Msgf("Group: %s", group) addCategoryGroup(group) } } } }