Просмотр исходного кода

fix(tui): handle SIGTERM, closes #319

adamdotdevin 7 месяцев назад
Родитель
Сommit
85805d2c38
1 измененных файлов с 13 добавлено и 0 удалено
  1. 13 0
      packages/tui/cmd/opencode/main.go

+ 13 - 0
packages/tui/cmd/opencode/main.go

@@ -5,7 +5,9 @@ import (
 	"encoding/json"
 	"log/slog"
 	"os"
+	"os/signal"
 	"strings"
+	"syscall"
 
 	tea "github.com/charmbracelet/bubbletea/v2"
 	flag "github.com/spf13/pflag"
@@ -81,6 +83,10 @@ func main() {
 		tea.WithMouseCellMotion(),
 	)
 
+	// Set up signal handling for graceful shutdown
+	sigChan := make(chan os.Signal, 1)
+	signal.Notify(sigChan, syscall.SIGTERM, syscall.SIGINT)
+
 	go func() {
 		stream := httpClient.Event.ListStreaming(ctx)
 		for stream.Next() {
@@ -93,6 +99,13 @@ func main() {
 		}
 	}()
 
+	// Handle signals in a separate goroutine
+	go func() {
+		sig := <-sigChan
+		slog.Info("Received signal, shutting down gracefully", "signal", sig)
+		program.Quit()
+	}()
+
 	// Run the TUI
 	result, err := program.Run()
 	if err != nil {