make sure we're not running tea model when running in dev or web mode without task

This commit is contained in:
Robin Olsen
2026-03-11 11:59:10 +01:00
parent 34542a9670
commit 2c90566260

View File

@@ -97,7 +97,11 @@ func (w *Web) Run(ctx context.Context, config Config) error {
serverErr := make(chan error, 1) serverErr := make(chan error, 1)
uiQuitChan := make(chan struct{}) uiQuitChan := make(chan struct{})
screen := tea.NewProgram( var screen *tea.Program
var screenDone chan struct{}
if w.quitChan != nil {
screen = tea.NewProgram(
tuiModel{ tuiModel{
address: address, address: address,
quitChan: uiQuitChan, quitChan: uiQuitChan,
@@ -105,20 +109,19 @@ func (w *Web) Run(ctx context.Context, config Config) error {
tea.WithAltScreen(), tea.WithAltScreen(),
) )
screenDone := make(chan struct{}) screenDone = make(chan struct{})
go func() { go func() {
defer close(screenDone) defer close(screenDone)
screen.Run()
if _, err := screen.Run(); err != nil {
fmt.Printf("failed to start terminal UI: %s\n", err)
}
}() }()
}
sigChan := make(chan os.Signal, 1) sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM) signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM)
defer signal.Stop(sigChan) defer signal.Stop(sigChan)
fmt.Println("Starting server at", address+"...")
go func() { go func() {
if err := httpServer.ListenAndServe(); err != nil && if err := httpServer.ListenAndServe(); err != nil &&
!errors.Is(err, http.ErrServerClosed) { !errors.Is(err, http.ErrServerClosed) {
@@ -138,12 +141,13 @@ func (w *Web) Run(ctx context.Context, config Config) error {
handler.SetSubmitChan(w.submitChan) handler.SetSubmitChan(w.submitChan)
} }
var shutdownMsg string
if w.quitChan != nil {
if err := browser.Open(address); err != nil { if err := browser.Open(address); err != nil {
fmt.Printf("failed to open browser: %s\n", err) fmt.Printf("failed to open browser: %s\n", err)
} }
var shutdownMsg string
select { select {
case <-w.quitChan: case <-w.quitChan:
shutdownMsg = "Task completed! Ending task and server..." shutdownMsg = "Task completed! Ending task and server..."
@@ -154,13 +158,27 @@ func (w *Web) Run(ctx context.Context, config Config) error {
case <-ctx.Done(): case <-ctx.Done():
shutdownMsg = "Context cancelled. Ending task and server..." shutdownMsg = "Context cancelled. Ending task and server..."
case err := <-serverErr: case err := <-serverErr:
if screen != nil {
screen.Quit() screen.Quit()
<-screenDone <-screenDone
}
return err return err
} }
} else {
select {
case sig := <-sigChan:
shutdownMsg = fmt.Sprintf("Received signal %s. Closing server...", sig)
case <-ctx.Done():
shutdownMsg = "Context cancelled. Closing server..."
case err := <-serverErr:
return err
}
}
if screen != nil {
screen.Quit() screen.Quit()
<-screenDone <-screenDone
}
fmt.Println(shutdownMsg) fmt.Println(shutdownMsg)