mirror of
https://github.com/anotherhadi/spilltea.git
synced 2026-07-06 12:42:32 +02:00
Add fatal error when port is already in use
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
This commit is contained in:
+16
-2
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user