74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
package steps
|
|
|
|
import (
|
|
"miasma-installer/tui/styles"
|
|
"strings"
|
|
|
|
"github.com/charmbracelet/bubbles/textinput"
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
)
|
|
|
|
type HostnameModel struct {
|
|
Hostname string
|
|
input textinput.Model
|
|
Finished bool
|
|
}
|
|
|
|
func NewHostnameModel() HostnameModel {
|
|
ti := textinput.New()
|
|
ti.Placeholder = "miasma"
|
|
ti.Focus()
|
|
ti.CharLimit = 63
|
|
ti.Width = 40
|
|
|
|
return HostnameModel{
|
|
input: ti,
|
|
}
|
|
}
|
|
|
|
func (m HostnameModel) Init() tea.Cmd {
|
|
return textinput.Blink
|
|
}
|
|
|
|
func (m HostnameModel) 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 "enter":
|
|
if m.input.Value() != "" {
|
|
m.Hostname = m.input.Value()
|
|
m.Finished = true
|
|
return m, nil
|
|
}
|
|
}
|
|
}
|
|
|
|
var cmd tea.Cmd
|
|
m.input, cmd = m.input.Update(msg)
|
|
return m, cmd
|
|
}
|
|
|
|
func (m HostnameModel) View() string {
|
|
var content strings.Builder
|
|
|
|
content.WriteString(styles.TitleStyle.Render("💻 System Hostname"))
|
|
content.WriteString("\n\n")
|
|
|
|
info := "Choose a name for your computer.\nThis will be used to identify your system on the network."
|
|
content.WriteString(styles.InfoBoxStyle.Render(info))
|
|
content.WriteString("\n\n")
|
|
|
|
content.WriteString(styles.LabelStyle.Render("Hostname:"))
|
|
content.WriteString("\n")
|
|
content.WriteString(styles.FocusedInputStyle.Render(m.input.View()))
|
|
content.WriteString("\n\n")
|
|
|
|
content.WriteString(styles.RenderHelp("Enter", "Continue"))
|
|
|
|
return styles.AppStyle.Render(content.String())
|
|
}
|