added encryption and disk selection
This commit is contained in:
67
tui/model.go
67
tui/model.go
@@ -11,6 +11,10 @@ type State int
|
||||
const (
|
||||
StateWelcome State = iota
|
||||
StateDiskSelection
|
||||
StateEncryption
|
||||
StateHostname
|
||||
StateUser
|
||||
StateConfirm
|
||||
StateInstalling
|
||||
StateFinished
|
||||
)
|
||||
@@ -20,6 +24,12 @@ type RootModel struct {
|
||||
CurrentModel tea.Model
|
||||
Width int
|
||||
Height int
|
||||
SelectedDisk string
|
||||
EnableLUKS bool
|
||||
Hostname string
|
||||
Username string
|
||||
UserPassword string
|
||||
RootPassword string
|
||||
}
|
||||
|
||||
func NewModel() RootModel {
|
||||
@@ -29,6 +39,10 @@ func NewModel() RootModel {
|
||||
}
|
||||
}
|
||||
|
||||
func (m RootModel) Init() tea.Cmd {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m RootModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
var cmd tea.Cmd
|
||||
|
||||
@@ -54,13 +68,56 @@ func (m RootModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
|
||||
case steps.DiskSelModel:
|
||||
if m.CurrentModel.(steps.DiskSelModel).Finished {
|
||||
// need to update this to pass actual selected disk model to the installer
|
||||
selectedDisk := m.CurrentModel.(steps.DiskSelModel).SelectedDisk
|
||||
m.State = StateInstalling
|
||||
m.CurrentModel = steps.NewInstallModel(selectedDisk)
|
||||
m.SelectedDisk = m.CurrentModel.(steps.DiskSelModel).SelectedDisk
|
||||
m.State = StateEncryption
|
||||
m.CurrentModel = steps.NewEncryptionModel()
|
||||
return m, m.CurrentModel.Init()
|
||||
}
|
||||
// logic for StateInstalling -> StateFinished will go here
|
||||
|
||||
case steps.EncryptionModel:
|
||||
if m.CurrentModel.(steps.EncryptionModel).Finished {
|
||||
m.EnableLUKS = m.CurrentModel.(steps.EncryptionModel).EnableEncryption
|
||||
if m.EnableLUKS {
|
||||
m.RootPassword = m.CurrentModel.(steps.EncryptionModel).Password
|
||||
}
|
||||
m.State = StateHostname
|
||||
m.CurrentModel = steps.NewHostnameModel()
|
||||
return m, m.CurrentModel.Init()
|
||||
}
|
||||
|
||||
case steps.HostnameModel:
|
||||
if m.CurrentModel.(steps.HostnameModel).Finished {
|
||||
m.Hostname = m.CurrentModel.(steps.HostnameModel).Hostname
|
||||
m.State = StateUser
|
||||
m.CurrentModel = steps.NewUserModel()
|
||||
return m, m.CurrentModel.Init()
|
||||
}
|
||||
|
||||
case steps.UserModel:
|
||||
if m.CurrentModel.(steps.UserModel).Finished {
|
||||
m.Username = m.CurrentModel.(steps.UserModel).Username
|
||||
m.UserPassword = m.CurrentModel.(steps.UserModel).Password
|
||||
m.State = StateConfirm
|
||||
m.CurrentModel = steps.NewConfirmModel(m.SelectedDisk, m.EnableLUKS, m.Hostname, m.Username)
|
||||
return m, m.CurrentModel.Init()
|
||||
}
|
||||
|
||||
case steps.ConfirmModel:
|
||||
if m.CurrentModel.(steps.ConfirmModel).Finished {
|
||||
if m.CurrentModel.(steps.ConfirmModel).Confirmed {
|
||||
m.State = StateInstalling
|
||||
m.CurrentModel = steps.NewInstallModel(m.SelectedDisk, m.EnableLUKS, m.Hostname, m.Username, m.UserPassword, m.RootPassword)
|
||||
return m, m.CurrentModel.Init()
|
||||
} else {
|
||||
return m, tea.Quit
|
||||
}
|
||||
}
|
||||
|
||||
case steps.InstallModel:
|
||||
if m.CurrentModel.(steps.InstallModel).Finished {
|
||||
m.State = StateFinished
|
||||
return m, tea.Quit
|
||||
}
|
||||
}
|
||||
return m, cmd
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user