A kind of Augmented Reality programming game that makes you a better programmer.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
ttarpit/config/settings.go

58 lines
1.0 KiB

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
}