Skip to content

Commit 3741238

Browse files
authored
Handle better interrupt signals (#63)
1 parent 27c4f0c commit 3741238

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

main.go

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,11 @@ func runIt(recipe internal.Recipe) error {
117117
return fmt.Errorf("failed to create docker runner: %w", err)
118118
}
119119

120+
sig := make(chan os.Signal, 1)
121+
signal.Notify(sig, os.Interrupt)
122+
120123
if err := dockerRunner.Run(); err != nil {
124+
dockerRunner.Stop()
121125
return fmt.Errorf("failed to run docker: %w", err)
122126
}
123127

@@ -138,23 +142,20 @@ func runIt(recipe internal.Recipe) error {
138142
}
139143
}
140144

141-
// wait for service readiness
142-
if err := internal.WaitForReady(svcManager); err != nil {
143-
dockerRunner.Stop()
144-
return fmt.Errorf("failed to wait for service readiness: %w", err)
145-
}
146-
147145
watchdogErr := make(chan error, 1)
148-
if watchdog {
149-
go func() {
146+
readyErr := make(chan error, 1)
147+
148+
go func() {
149+
if err := internal.WaitForReady(svcManager); err != nil {
150+
readyErr <- fmt.Errorf("failed to wait for service readiness: %w", err)
151+
}
152+
153+
if watchdog {
150154
if err := internal.RunWatchdog(svcManager); err != nil {
151155
watchdogErr <- fmt.Errorf("watchdog failed: %w", err)
152156
}
153-
}()
154-
}
155-
156-
sig := make(chan os.Signal, 1)
157-
signal.Notify(sig, os.Interrupt)
157+
}
158+
}()
158159

159160
var timerCh <-chan time.Time
160161
if timeout > 0 {
@@ -166,6 +167,8 @@ func runIt(recipe internal.Recipe) error {
166167
fmt.Println("Stopping...")
167168
case err := <-dockerRunner.ExitErr():
168169
fmt.Println("Service failed:", err)
170+
case err := <-readyErr:
171+
fmt.Println("Service failed to start:", err)
169172
case err := <-watchdogErr:
170173
fmt.Println("Watchdog failed:", err)
171174
case <-timerCh:

0 commit comments

Comments
 (0)