package main import ( "fmt" "os/exec" "log" "errors" "sync" "lcthw.dev/learn-code-the-hard-way/ozai/config" ) func main() { config.Load() fmt.Println("CONFIG:", config.Settings.ConfigPath) fmt.Println("COMMANDs:", config.Settings.Processes) var wg sync.WaitGroup for name, proc := range config.Settings.Processes { fmt.Println("PROCESS:", name) wg.Add(1) go func() { defer wg.Done() for { fmt.Println("STARTING", name) cmd := exec.Command(proc.Command, proc.Args...) if errors.Is(cmd.Err, exec.ErrDot) { cmd.Err = nil } out, err := cmd.CombinedOutput() if err != nil { fmt.Printf("%s\n", out) log.Fatal(err) } fmt.Println("WAITING for", name) cmd.Wait() fmt.Println("PROC", name, "EXITED SEND QUIT") } }() } wg.Wait() }