Add fatal error when port is already in use

Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
This commit is contained in:
Hadi
2026-05-26 22:44:31 +02:00
parent 2e61ffa125
commit 8683d17242
4 changed files with 30 additions and 12 deletions
+16 -2
View File
@@ -137,17 +137,31 @@ func main() {
}
broker := intercept.NewBroker()
m := appUI.New(broker, project.Name, project.Path)
if _, err := tea.NewProgram(m).Run(); err != nil {
final, err := tea.NewProgram(m).Run()
if err != nil {
fmt.Fprintf(os.Stderr, "tui: %v\n", err)
os.Exit(1)
}
if app, ok := final.(appUI.Model); ok {
if ferr := app.FatalErr(); ferr != nil {
fmt.Fprintf(os.Stderr, "error: %v\n", ferr)
os.Exit(1)
}
}
return
}
// Run home + app in a single program to avoid a blank flash on transition.
root := rootModel{home: homeUI.New(projectDir)}
if _, err := tea.NewProgram(root).Run(); err != nil {
final, err := tea.NewProgram(root).Run()
if err != nil {
fmt.Fprintf(os.Stderr, "tui: %v\n", err)
os.Exit(1)
}
if r, ok := final.(rootModel); ok {
if ferr := r.FatalErr(); ferr != nil {
fmt.Fprintf(os.Stderr, "error: %v\n", ferr)
os.Exit(1)
}
}
}
+9
View File
@@ -58,3 +58,12 @@ func (m rootModel) View() tea.View {
}
return m.home.View()
}
func (m rootModel) FatalErr() error {
if m.state == rootStateApp {
if app, ok := m.app.(appUI.Model); ok {
return app.FatalErr()
}
}
return nil
}
+3
View File
@@ -55,6 +55,7 @@ type Model struct {
database *db.DB
logFile *os.File
pluginManager *plugins.Manager
fatalErr error
width int
height int
@@ -135,6 +136,8 @@ func New(broker *intercept.Broker, name, path string) Model {
return m
}
func (m Model) FatalErr() error { return m.fatalErr }
func (m Model) Init() tea.Cmd {
mgr := m.pluginManager
return tea.Batch(
+2 -10
View File
@@ -107,16 +107,8 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
case proxyPkg.ErrMsg:
if msg.Err != nil {
log.Printf("proxy error: %v", msg.Err)
return m, tea.Batch(
func() tea.Msg {
return notificationsUI.NotificationMsg{
Title: "Proxy Error",
Body: msg.Err.Error(),
Kind: notificationsUI.KindError,
}
},
tea.Quit,
)
m.fatalErr = msg.Err
return m, tea.Quit
}
return m, nil