package config import ( "flag" "log" "os" "os/exec" "encoding/json" "regexp" ) type Process struct { Command string Args []string ExecCmd *exec.Cmd } type Config struct { Triggers []string Includes []string Processes map[string]Process StartingHP int Deadline string OneErrorPerLine bool ConfigPath string TriggerRegex []*regexp.Regexp IncludeRegex []*regexp.Regexp } func ParseFlags(c *Config) { flag.StringVar(&c.ConfigPath, "config", ".ttarpit.json", ".ttarpit.json to load") flag.Parse() } func Load() Config { var settings Config ParseFlags(&settings) data, err := os.ReadFile(settings.ConfigPath) if err != nil { log.Fatal(err) } err = json.Unmarshal(data, &settings) if err != nil { log.Fatal(err) } for _, reg := range settings.Triggers { settings.TriggerRegex = append(settings.TriggerRegex, regexp.MustCompile(reg)) } for _, reg := range settings.Includes { settings.IncludeRegex = append(settings.IncludeRegex, regexp.MustCompile(reg)) } return settings }