85 lines
2.0 KiB
Go
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())
|
|
}
|