mirror of
https://github.com/anotherhadi/spilltea.git
synced 2026-07-06 20:42:33 +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()
|
broker := intercept.NewBroker()
|
||||||
m := appUI.New(broker, project.Name, project.Path)
|
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)
|
fmt.Fprintf(os.Stderr, "tui: %v\n", err)
|
||||||
os.Exit(1)
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run home + app in a single program to avoid a blank flash on transition.
|
// Run home + app in a single program to avoid a blank flash on transition.
|
||||||
root := rootModel{home: homeUI.New(projectDir)}
|
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)
|
fmt.Fprintf(os.Stderr, "tui: %v\n", err)
|
||||||
os.Exit(1)
|
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()
|
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
|
database *db.DB
|
||||||
logFile *os.File
|
logFile *os.File
|
||||||
pluginManager *plugins.Manager
|
pluginManager *plugins.Manager
|
||||||
|
fatalErr error
|
||||||
|
|
||||||
width int
|
width int
|
||||||
height int
|
height int
|
||||||
@@ -135,6 +136,8 @@ func New(broker *intercept.Broker, name, path string) Model {
|
|||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m Model) FatalErr() error { return m.fatalErr }
|
||||||
|
|
||||||
func (m Model) Init() tea.Cmd {
|
func (m Model) Init() tea.Cmd {
|
||||||
mgr := m.pluginManager
|
mgr := m.pluginManager
|
||||||
return tea.Batch(
|
return tea.Batch(
|
||||||
|
|||||||
@@ -107,16 +107,8 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||||||
case proxyPkg.ErrMsg:
|
case proxyPkg.ErrMsg:
|
||||||
if msg.Err != nil {
|
if msg.Err != nil {
|
||||||
log.Printf("proxy error: %v", msg.Err)
|
log.Printf("proxy error: %v", msg.Err)
|
||||||
return m, tea.Batch(
|
m.fatalErr = msg.Err
|
||||||
func() tea.Msg {
|
return m, tea.Quit
|
||||||
return notificationsUI.NotificationMsg{
|
|
||||||
Title: "Proxy Error",
|
|
||||||
Body: msg.Err.Error(),
|
|
||||||
Kind: notificationsUI.KindError,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
tea.Quit,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
return m, nil
|
return m, nil
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user