Documentation
¶
Overview ¶
Package wizard implements the interactive TUI setup wizard for ExitBox.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var AllAgents = []AgentOption{
{Name: "claude", DisplayName: "Claude Code", Description: "Anthropic's AI coding assistant"},
{Name: "codex", DisplayName: "OpenAI Codex", Description: "OpenAI's coding CLI"},
{Name: "opencode", DisplayName: "OpenCode", Description: "Open-source AI code assistant"},
}
AllAgents defines the selectable agents.
var AllLanguages = []Language{
{Name: "Go", Profile: "go"},
{Name: "Python", Profile: "python"},
{Name: "Node/JS", Profile: "node"},
{Name: "Rust", Profile: "rust"},
{Name: "Java", Profile: "java"},
{Name: "Ruby", Profile: "ruby"},
{Name: "PHP", Profile: "php"},
{Name: "C/C++", Profile: "c"},
{Name: "Flutter/Dart", Profile: "flutter"},
}
AllLanguages defines the available language choices.
var AllToolCategories = []ToolCategory{ {Name: "Build Tools", Packages: []string{"cmake", "samurai", "autoconf", "automake", "libtool"}}, {Name: "Shell Utils", Packages: []string{"rsync", "openssh-client", "mandoc", "gnupg", "file"}}, {Name: "Networking", Packages: []string{"iptables", "ipset", "iproute2", "bind-tools"}}, {Name: "Database", Packages: []string{"postgresql16-client", "mariadb-client", "sqlite", "redis"}}, {Name: "DevOps", Packages: []string{"docker-cli", "docker-cli-compose", "kubectl", "helm", "opentofu"}, Binaries: []Binary{ {Name: "kind", URLPattern: "https://kind.sigs.k8s.io/dl/latest/kind-linux-{arch}"}, }}, {Name: "Web", Packages: []string{"nginx", "apache2-utils", "httpie"}}, {Name: "Security", Packages: []string{"nmap", "tcpdump", "netcat-openbsd"}}, }
AllToolCategories defines the available tool category choices.
var Roles = []Role{ { Name: "Frontend", Description: "Web frontend development", Profiles: []string{"node", "web", "build-tools"}, Languages: []string{"Node/JS"}, ToolCategories: []string{"Build Tools", "Web"}, }, { Name: "Backend", Description: "Server-side development", Profiles: []string{"python", "database", "build-tools"}, Languages: []string{"Python", "Go"}, ToolCategories: []string{"Build Tools", "Database"}, }, { Name: "Fullstack", Description: "Full-stack web development", Profiles: []string{"node", "python", "database", "web", "build-tools"}, Languages: []string{"Node/JS", "Python"}, ToolCategories: []string{"Build Tools", "Database", "Web"}, }, { Name: "DevOps", Description: "Infrastructure and operations", Profiles: []string{"devops", "node", "networking", "shell", "build-tools"}, Languages: []string{"Go", "Python", "Node/JS"}, ToolCategories: []string{"Build Tools", "Networking", "DevOps", "Shell Utils"}, }, { Name: "Data Science", Description: "Data analysis and machine learning", Profiles: []string{"python", "datascience", "database"}, Languages: []string{"Python"}, ToolCategories: []string{"Database"}, }, { Name: "Mobile", Description: "Mobile application development", Profiles: []string{"flutter", "node"}, Languages: []string{"Flutter/Dart", "Node/JS"}, ToolCategories: []string{"Build Tools"}, }, { Name: "Embedded", Description: "Embedded systems and IoT", Profiles: []string{"c", "embedded", "build-tools"}, Languages: []string{"C/C++", "Rust"}, ToolCategories: []string{"Build Tools"}, }, { Name: "Security", Description: "Security research and tooling", Profiles: []string{"security", "networking", "shell"}, Languages: []string{"Python", "Go"}, ToolCategories: []string{"Networking", "Security", "Shell Utils"}, }, }
Roles defines the available developer roles.
Functions ¶
func ComputePackages ¶
ComputePackages computes Alpine packages from selected tool categories.
func ComputeProfiles ¶
ComputeProfiles computes the profile list from roles + language selections.
Types ¶
type AgentOption ¶
AgentOption represents a selectable agent.
type Binary ¶
type Binary struct {
Name string // Binary name (installed to /usr/local/bin)
URLPattern string // Download URL with {arch} placeholder (amd64/arm64)
}
Binary represents a tool installed via direct download rather than apk.
func ComputeBinaries ¶
ComputeBinaries computes extra binary downloads from selected tool categories.
type Language ¶
type Language struct {
Name string // Display name
Profile string // Maps to an exitbox profile name
}
Language represents a selectable programming language.
type Model ¶
type Model struct {
// contains filtered or unexported fields
}
Model is the root bubbletea model for the wizard.
type Role ¶
type Role struct {
Name string
Description string
Profiles []string // Default profiles to activate
Languages []string // Pre-checked language names in language step
ToolCategories []string // Pre-checked tool category names in tools step
}
Role represents a developer role with preset defaults.
type ToolCategory ¶
type ToolCategory struct {
Name string // Display name
Packages []string // Alpine packages in this category
Binaries []Binary // Extra binaries to download (not available via apk)
}
ToolCategory represents a selectable tool category.