Files
miasma-installer/tui/steps/confirm.go
tumillanino ee79d720ec
Some checks failed
Build / build (push) Failing after 4m56s
updated styling and installation steps
2025-10-31 22:59:56 +11:00

85 lines
2.0 KiB
Go

package steps
import (
"fmt"
"miasma-installer/tui/styles"
"strings"
tea "github.com/charmbracelet/bubbletea"
)
type ConfirmModel struct {
Disk string
EnableLUKS bool
Hostname string
Username string
Confirmed bool
Finished bool
}
func NewConfirmModel(disk string, enableLUKS bool, hostname string, username string) ConfirmModel {
return ConfirmModel{
Disk: disk,
EnableLUKS: enableLUKS,
Hostname: hostname,
Username: username,
}
}
func (m ConfirmModel) Init() tea.Cmd {
return nil
}
func (m ConfirmModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
if m.Finished {
return m, nil
}
switch msg := msg.(type) {
case tea.KeyMsg:
switch msg.String() {
case "y":
m.Confirmed = true
m.Finished = true
return m, nil
case "n":
m.Confirmed = false
m.Finished = true
return m, nil
}
}
return m, nil
}
func (m ConfirmModel) View() string {
var content strings.Builder
content.WriteString(styles.TitleStyle.Render("✓ Confirm Installation"))
content.WriteString("\n\n")
content.WriteString("Review your installation settings:\n\n")
settings := []string{
styles.RenderKeyValue("Disk", m.Disk),
styles.RenderKeyValue("Encryption", map[bool]string{true: "Enabled (LUKS2)", false: "Disabled"}[m.EnableLUKS]),
styles.RenderKeyValue("Hostname", m.Hostname),
styles.RenderKeyValue("Username", m.Username),
styles.RenderKeyValue("Filesystem", "btrfs"),
styles.RenderKeyValue("Desktop", "Cosmic Desktop"),
styles.RenderKeyValue("Kernel", "linux-hardened"),
styles.RenderKeyValue("Bootloader", "systemd-boot (UEFI)"),
}
content.WriteString(styles.BoxStyle.Render(strings.Join(settings, "\n")))
content.WriteString("\n\n")
warning := fmt.Sprintf("⚠️ WARNING: This will ERASE ALL DATA on %s", m.Disk)
content.WriteString(styles.WarningBoxStyle.Render(warning))
content.WriteString("\n\n")
content.WriteString(styles.RenderHelp("y", "Proceed with installation", "n", "Cancel"))
return styles.AppStyle.Render(content.String())
}