add first supervisor process

This commit is contained in:
Adrian Zürcher
2025-08-05 17:17:55 +02:00
parent dd5ebb60fd
commit 20912ba17c
2 changed files with 67 additions and 0 deletions

10
dist/supervisorTemplate.json vendored Normal file
View File

@@ -0,0 +1,10 @@
{
"processes":[{
"name":"Database DBM",
"executePath":"dist/test-windows-amd64.exe",
"workingDirectory":".",
"startDelay":2,
"priority":0
}
]
}

57
models/supervisor.go Normal file
View File

@@ -0,0 +1,57 @@
package models
import (
"encoding/json"
"fmt"
"os"
"os/exec"
"sort"
)
type Supervisor struct {
Processes []*SupervisorProcess `json:"processes"`
}
type SupervisorProcess struct {
Name string `json:"name"`
ExecutePath string `json:"executePath"`
WorkingDirectory string `json:"workingDirectory,omitempty"`
StartDelay int `json:"startDelay,omitempty"`
Priority int `json:"priority,omitempty"`
Arguments []string `json:"arguments,omitempty"`
process *exec.Cmd `json:"-"`
}
func ReadTemplate(path string) (supervisor Supervisor, err error) {
content, err := os.ReadFile(path)
if err != nil {
return
}
err = json.Unmarshal(content, &supervisor)
return
}
func (s *Supervisor) StartProcesses() error {
sort.Slice(s.Processes, func(i, j int) bool {
return s.Processes[i].Priority < s.Processes[j].Priority
})
for _, p := range s.Processes {
go func() {
p.process = exec.Command(p.ExecutePath, p.Arguments...)
//cmd.Env = append(cmd.Env, "MY_VAR=some_value")
p.process.Dir = p.WorkingDirectory
output, err := p.process.Output()
if err != nil {
fmt.Println("Error:", err)
}
fmt.Println("Output:", string(output))
}()
}
fmt.Println(3)
return nil
}