From 68a5103caed7bc3ede58dca83fdc232b865d1f86 Mon Sep 17 00:00:00 2001 From: Berger Eugene Date: Sat, 7 Jan 2023 16:18:09 +0200 Subject: [PATCH] Fix signal handling in TUI mode and add SIGHUP (#38) --- src/cmd/project_runner.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/cmd/project_runner.go b/src/cmd/project_runner.go index 5fbaa0e..c382bf0 100644 --- a/src/cmd/project_runner.go +++ b/src/cmd/project_runner.go @@ -40,22 +40,29 @@ func runProject(isDefConfigPath bool, process []string, noDeps bool) { os.Exit(exitCode) } -func runHeadless(project *app.Project) int { +func setSignal(signalHandler func()) { cancelChan := make(chan os.Signal, 1) - // catch SIGTERM or SIGINTERRUPT - signal.Notify(cancelChan, syscall.SIGTERM, syscall.SIGINT) - + signal.Notify(cancelChan, syscall.SIGTERM, syscall.SIGINT, syscall.SIGHUP) go func() { sig := <-cancelChan log.Info().Msgf("Caught %v - Shutting down the running processes...", sig) - project.ShutDownProject() + signalHandler() os.Exit(1) }() +} + +func runHeadless(project *app.Project) int { + setSignal(func() { + project.ShutDownProject() + }) exitCode := project.Run() return exitCode } func runTui(project *app.Project) int { + setSignal(func() { + tui.Stop() + }) defer quiet()() go tui.SetupTui(project.LogLength) exitCode := project.Run()