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

@ -581,8 +581,17 @@ func (s *Supervisor) catchExitSignal() {
}()
}
func newSupervisorHandler() (hdlr http.Handler, err error) {
suv := &Supervisor{
func (s *Supervisor) AutoStartPrograms() {
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,
pgMap: make(map[string]Program, 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/perfs/{name}", suv.wsPerf)
return r, nil
return suv, r, nil
}

Loading…
Cancel
Save