Przeglądaj źródła

support restarting only on file changes.

Lucas Stadler 11 lat temu
rodzic
commit
3cee675480
1 zmienionych plików z 8 dodań i 6 usunięć
  1. 8 6
      go/qst.go

+ 8 - 6
go/qst.go

@ -39,6 +39,7 @@ var mappings = map[string]func(string) string{
39 39
}
40 40
41 41
var delay = flag.Duration("delay", 1*time.Second, "time to wait until restart")
42
var autoRestart = flag.Bool("autorestart", true, "restart after command exists")
42 43
43 44
func main() {
44 45
	log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
@ -68,7 +69,7 @@ func main() {
68 69
		log.Fatalf("error: no mapping found for `%s'", file)
69 70
	}
70 71
71
	runner := MakeRunner(fn(file))
72
	runner := &Runner{nil, fn(file), false, *autoRestart}
72 73
	go runCmd(file, runner)
73 74
74 75
	c := make(chan os.Signal, 1)
@ -105,10 +106,6 @@ type Runner struct {
105 106
	restart  bool
106 107
}
107 108
108
func MakeRunner(shellCmd string) *Runner {
109
	return &Runner{nil, shellCmd, false, true}
110
}
111
112 109
func (r *Runner) Start() error {
113 110
	if r.started {
114 111
		return errors.New("already started, use Restart()")
@ -125,6 +122,7 @@ func (r *Runner) Start() error {
125 122
126 123
			time.Sleep(*delay)
127 124
			if !r.restart {
125
				r.started = false
128 126
				break
129 127
			}
130 128
		}
@ -142,7 +140,11 @@ func (r *Runner) Kill() error {
142 140
}
143 141
144 142
func (r *Runner) Restart() error {
145
	return r.Kill()
143
	if r.started {
144
		return r.Kill()
145
	} else {
146
		return r.Start()
147
	}
146 148
}
147 149
148 150
func (r *Runner) Stop() {