make sure we're not running tea model when running in dev or web mode without task
This commit is contained in:
@@ -97,28 +97,31 @@ 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
|
||||||
tuiModel{
|
var screenDone chan struct{}
|
||||||
address: address,
|
|
||||||
quitChan: uiQuitChan,
|
|
||||||
},
|
|
||||||
tea.WithAltScreen(),
|
|
||||||
)
|
|
||||||
|
|
||||||
screenDone := make(chan struct{})
|
if w.quitChan != nil {
|
||||||
|
screen = tea.NewProgram(
|
||||||
|
tuiModel{
|
||||||
|
address: address,
|
||||||
|
quitChan: uiQuitChan,
|
||||||
|
},
|
||||||
|
tea.WithAltScreen(),
|
||||||
|
)
|
||||||
|
|
||||||
go func() {
|
screenDone = make(chan struct{})
|
||||||
defer close(screenDone)
|
|
||||||
|
|
||||||
if _, err := screen.Run(); err != nil {
|
go func() {
|
||||||
fmt.Printf("failed to start terminal UI: %s\n", err)
|
defer close(screenDone)
|
||||||
}
|
screen.Run()
|
||||||
}()
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
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,29 +141,44 @@ func (w *Web) Run(ctx context.Context, config Config) error {
|
|||||||
handler.SetSubmitChan(w.submitChan)
|
handler.SetSubmitChan(w.submitChan)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := browser.Open(address); err != nil {
|
|
||||||
fmt.Printf("failed to open browser: %s\n", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
var shutdownMsg string
|
var shutdownMsg string
|
||||||
|
|
||||||
select {
|
if w.quitChan != nil {
|
||||||
case <-w.quitChan:
|
|
||||||
shutdownMsg = "Task completed! Ending task and server..."
|
if err := browser.Open(address); err != nil {
|
||||||
case <-uiQuitChan:
|
fmt.Printf("failed to open browser: %s\n", err)
|
||||||
shutdownMsg = "Quit key pressed. Ending task and server..."
|
}
|
||||||
case sig := <-sigChan:
|
select {
|
||||||
shutdownMsg = fmt.Sprintf("Received signal %s. Ending task and server...", sig)
|
case <-w.quitChan:
|
||||||
case <-ctx.Done():
|
shutdownMsg = "Task completed! Ending task and server..."
|
||||||
shutdownMsg = "Context cancelled. Ending task and server..."
|
case <-uiQuitChan:
|
||||||
case err := <-serverErr:
|
shutdownMsg = "Quit key pressed. Ending task and server..."
|
||||||
screen.Quit()
|
case sig := <-sigChan:
|
||||||
<-screenDone
|
shutdownMsg = fmt.Sprintf("Received signal %s. Ending task and server...", sig)
|
||||||
return err
|
case <-ctx.Done():
|
||||||
|
shutdownMsg = "Context cancelled. Ending task and server..."
|
||||||
|
case err := <-serverErr:
|
||||||
|
if screen != nil {
|
||||||
|
screen.Quit()
|
||||||
|
<-screenDone
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
screen.Quit()
|
if screen != nil {
|
||||||
<-screenDone
|
screen.Quit()
|
||||||
|
<-screenDone
|
||||||
|
}
|
||||||
|
|
||||||
fmt.Println(shutdownMsg)
|
fmt.Println(shutdownMsg)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user