87 lines
2.4 KiB
Go
87 lines
2.4 KiB
Go
package tui
|
|
|
|
import (
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
)
|
|
|
|
func (m model) handleMainMenu() (tea.Model, tea.Cmd) {
|
|
switch m.cursor {
|
|
case 0:
|
|
m.screen = screenNetwork
|
|
m.cursor = 0
|
|
return m, nil
|
|
case 1:
|
|
m.busy = true
|
|
m.busyTitle = "Services"
|
|
return m, func() tea.Msg {
|
|
services, err := m.app.ListBeeServices()
|
|
return servicesMsg{services: services, err: err}
|
|
}
|
|
case 2:
|
|
m.screen = screenAcceptance
|
|
m.cursor = 0
|
|
return m, nil
|
|
case 3:
|
|
m.busy = true
|
|
m.busyTitle = "Run audit"
|
|
return m, func() tea.Msg {
|
|
result, err := m.app.RunAuditNow(m.runtimeMode)
|
|
return resultMsg{title: result.Title, body: result.Body, err: err, back: screenMain}
|
|
}
|
|
case 4:
|
|
m.busy = true
|
|
m.busyTitle = "Run self-check"
|
|
return m, func() tea.Msg {
|
|
result, err := m.app.RunRuntimePreflightResult()
|
|
return resultMsg{title: result.Title, body: result.Body, err: err, back: screenMain}
|
|
}
|
|
case 5:
|
|
m.pendingAction = actionExportAudit
|
|
m.busy = true
|
|
m.busyTitle = "Export audit"
|
|
return m, func() tea.Msg {
|
|
targets, err := m.app.ListRemovableTargets()
|
|
return exportTargetsMsg{targets: targets, err: err}
|
|
}
|
|
case 6:
|
|
m.pendingAction = actionExportBundle
|
|
m.busy = true
|
|
m.busyTitle = "Export support bundle"
|
|
return m, func() tea.Msg {
|
|
targets, err := m.app.ListRemovableTargets()
|
|
return exportTargetsMsg{targets: targets, err: err}
|
|
}
|
|
case 7:
|
|
m.busy = true
|
|
m.busyTitle = "Required tools"
|
|
return m, func() tea.Msg {
|
|
result := m.app.ToolCheckResult([]string{"dmidecode", "smartctl", "nvme", "ipmitool", "lspci", "ethtool", "bee", "nvidia-smi", "bee-gpu-stress", "memtester", "dhclient", "lsblk", "mount"})
|
|
return resultMsg{title: result.Title, body: result.Body, back: screenMain}
|
|
}
|
|
case 8:
|
|
m.busy = true
|
|
m.busyTitle = "Health summary"
|
|
return m, func() tea.Msg {
|
|
result := m.app.HealthSummaryResult()
|
|
return resultMsg{title: result.Title, body: result.Body, back: screenMain}
|
|
}
|
|
case 9:
|
|
m.busy = true
|
|
m.busyTitle = "Runtime issues"
|
|
return m, func() tea.Msg {
|
|
result := m.app.RuntimeHealthResult()
|
|
return resultMsg{title: result.Title, body: result.Body, back: screenMain}
|
|
}
|
|
case 10:
|
|
m.busy = true
|
|
m.busyTitle = "Audit logs"
|
|
return m, func() tea.Msg {
|
|
result := m.app.AuditLogTailResult()
|
|
return resultMsg{title: result.Title, body: result.Body, back: screenMain}
|
|
}
|
|
case 11:
|
|
return m, tea.Quit
|
|
}
|
|
return m, nil
|
|
}
|