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.
43 lines
683 B
43 lines
683 B
package config
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
"os"
|
|
"io"
|
|
"os/exec"
|
|
"encoding/json"
|
|
)
|
|
|
|
type Process struct {
|
|
Command string
|
|
Args []string
|
|
Name string
|
|
Ready chan string
|
|
ExecCmd *exec.Cmd
|
|
}
|
|
|
|
type config struct {
|
|
Processes map[string]Process
|
|
ConfigPath string
|
|
}
|
|
|
|
var Settings config
|
|
|
|
func parseFlags(c *config) {
|
|
flag.StringVar(&c.ConfigPath, "config", ".ozai.json", ".ozai.json to load")
|
|
flag.Parse()
|
|
}
|
|
|
|
func Load() {
|
|
parseFlags(&Settings)
|
|
|
|
fh, err := os.Open(Settings.ConfigPath)
|
|
if err != nil { log.Fatal(err) }
|
|
|
|
data, err := io.ReadAll(fh)
|
|
if err != nil { log.Fatal(err) }
|
|
|
|
err = json.Unmarshal(data, &Settings)
|
|
if err != nil { log.Fatal(err) }
|
|
}
|
|
|