add auto start program support

master
codeskyblue 8 years ago
parent a6d578d154
commit 4ed67ab7c2

@ -75,7 +75,7 @@ func equinoxUpdate(channel string, skipConfirm bool) error {
} }
func actionStartServer(c *cli.Context) error { func actionStartServer(c *cli.Context) error {
hdlr, err := newSupervisorHandler() suv, hdlr, err := newSupervisorHandler()
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
@ -87,6 +87,7 @@ func actionStartServer(c *cli.Context) error {
addr := cfg.Server.Addr addr := cfg.Server.Addr
if c.Bool("foreground") { if c.Bool("foreground") {
suv.AutoStartPrograms()
log.Printf("server listen on %v", addr) log.Printf("server listen on %v", addr)
log.Fatal(http.ListenAndServe(addr, nil)) log.Fatal(http.ListenAndServe(addr, nil))
} else { } else {
@ -191,7 +192,7 @@ func actionReload(c *cli.Context) error {
} }
func actionConfigTest(c *cli.Context) error { func actionConfigTest(c *cli.Context) error {
if _, err := newSupervisorHandler(); err != nil { if _, _, err := newSupervisorHandler(); err != nil {
log.Fatal(err) log.Fatal(err)
} }
log.Println("test is successful") log.Println("test is successful")

@ -581,8 +581,17 @@ func (s *Supervisor) catchExitSignal() {
}() }()
} }
func newSupervisorHandler() (hdlr http.Handler, err error) { func (s *Supervisor) AutoStartPrograms() {
suv := &Supervisor{ for _, proc := range s.procMap {
if proc.Program.StartAuto {
log.Printf("auto start %s", strconv.Quote(proc.Name))
proc.Operate(StartEvent)
}
}
}
func newSupervisorHandler() (suv *Supervisor, hdlr http.Handler, err error) {
suv = &Supervisor{
ConfigDir: defaultConfigDir, ConfigDir: defaultConfigDir,
pgMap: make(map[string]Program, 0), pgMap: make(map[string]Program, 0),
procMap: make(map[string]*Process, 0), procMap: make(map[string]*Process, 0),
@ -611,5 +620,5 @@ func newSupervisorHandler() (hdlr http.Handler, err error) {
r.HandleFunc("/ws/logs/{name}", suv.wsLog) r.HandleFunc("/ws/logs/{name}", suv.wsLog)
r.HandleFunc("/ws/perfs/{name}", suv.wsPerf) r.HandleFunc("/ws/perfs/{name}", suv.wsPerf)
return r, nil return suv, r, nil
} }

Loading…
Cancel
Save