admin-dashboard-backend/grouptasks/grouptasks.go

89 lines
2.0 KiB
Go

package grouptasks
import (
"encoding/json"
"os"
"github.com/rs/zerolog/log"
)
var Groups []Group
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
}
//log.Info().Msgf("File content: %s", string(content))
var group Group
json.Unmarshal(content, &group)
group.Id = entry.Name()
Groups = append(Groups, group)
log.Info().Msgf("Group: %s", group)
log.Info().Msgf("Number of groups: %d", len(Groups))
}
}
}
}