108 lines
2.4 KiB
Go
108 lines
2.4 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|
|
}
|