334 lines
16 KiB
Plaintext
Raw Permalink Normal View History

2025-10-07 10:32:04 +01:00
# Guide Command Handler
# Provides interactive access to guides and cheatsheets
use ../flags.nu *
use ../../lib_provisioning *
# Display condensed cheatsheet summary
def display_cheatsheet_summary [] {
print ""
print $"(_ansi cyan_bold)╔════════════════════════════════════════════════════════════════╗(_ansi reset)"
print $"(_ansi cyan_bold)║ (_ansi yellow_bold)📋 QUICK COMMAND REFERENCE(_ansi reset) (_ansi cyan_bold)║(_ansi reset)"
print $"(_ansi cyan_bold)╚════════════════════════════════════════════════════════════════╝(_ansi reset)"
print ""
print $"(_ansi yellow_bold)Infrastructure:(_ansi reset)"
print $" provisioning s list # List servers"
print $" provisioning s create --infra <name> # Create servers [use --check for dry-run]"
print $" provisioning t list # List task services"
print $" provisioning t create kubernetes # Install Kubernetes"
print $" provisioning cl list # List clusters"
print ""
print $"(_ansi yellow_bold)Workspace:(_ansi reset)"
print $" provisioning ws init <name> # Initialize workspace"
print $" provisioning ws init <name> --infra <i> # Init with infrastructure"
print $" provisioning ws init <name> --template <t># minimal, full, example"
print $" provisioning ws list # List workspaces"
print $" provisioning dt # Discover taskservs (short)"
print $" provisioning discover taskservs # Discover all taskservs"
print $" provisioning dp # Discover providers (short)"
print $" provisioning dc # Discover clusters (short)"
print ""
print $"(_ansi yellow_bold)Templates:(_ansi reset)"
print $" provisioning tpl list # List all templates"
print $" provisioning tpl list --type taskservs # List taskserv templates"
print $" provisioning tpl show <name> # Show template details"
print $" provisioning tpl apply <name> <infra> # Apply template"
print ""
print $"(_ansi yellow_bold)Orchestration:(_ansi reset)"
print $" provisioning wf list # List workflows"
print $" provisioning wf monitor <id> # Monitor workflow"
print $" provisioning bat submit <file.k> # Submit batch workflow"
print $" provisioning orch status # Orchestrator status"
print ""
print $"(_ansi yellow_bold)Platform:(_ansi reset)"
print $" provisioning control-center # Start web control center"
print $" provisioning mcp-server # Start MCP server"
print ""
print $"(_ansi yellow_bold)Configuration:(_ansi reset)"
print $" provisioning env # Show environment"
print $" provisioning val config # Validate configuration"
print $" provisioning lyr show <name> # Show layer resolution"
print ""
print $"(_ansi yellow_bold)Help & Guides:(_ansi reset)"
print $" provisioning help # Main help"
print $" provisioning help infra # Infrastructure help"
print $" provisioning sc # This quick reference"
print $" provisioning quickstart # Full command cheatsheet"
print $" provisioning guide from-scratch # Complete deployment guide"
print $" provisioning guide update # Update guide"
print $" provisioning guide customize # Customization guide"
print ""
print $"(_ansi yellow_bold)Common Flags:(_ansi reset)"
print $" --check, -c # Dry-run mode [no changes]"
print $" --debug, -x # Enable debug output"
print $" --yes, -y # Auto-confirm operations"
print $" --infra, -i # Specify infrastructure"
print ""
print $"(_ansi yellow_bold)Shortcuts Summary:(_ansi reset)"
print $" (_ansi cyan_bold)Infrastructure:(_ansi reset) s (server), t (taskserv), cl (cluster), i (infra)"
print $" (_ansi cyan_bold)Workspace:(_ansi reset) ws (workspace), tpl (template)"
print $" (_ansi cyan_bold)Discovery:(_ansi reset) dt (discover taskservs), dp (providers), dc (clusters)"
print $" (_ansi cyan_bold)Orchestration:(_ansi reset) wf (workflow), bat (batch), orch (orchestrator)"
print $" (_ansi cyan_bold)Config:(_ansi reset) env, val (validate), lyr (layer)"
print $" (_ansi cyan_bold)Utils:(_ansi reset) ssh, sops, list (l/ls), nu"
print $" (_ansi cyan_bold)Help:(_ansi reset) h (help), sc (shortcuts), guide"
print ""
print $"(_ansi default_dimmed)💡 Quick tips:(_ansi reset)"
print $"(_ansi default_dimmed) • Use 'provisioning sc' to see this reference anytime(_ansi reset)"
print $"(_ansi default_dimmed) • Use 'provisioning quickstart' for complete guide with examples(_ansi reset)"
print ""
}
# Display markdown file with best available renderer
def display_markdown [file: path] {
# Check which renderers are available
let has_glow = (which glow | length) > 0
let has_bat = (which bat | length) > 0
let has_mdcat = (which mdcat | length) > 0
let has_less = (which less | length) > 0
# Use best available renderer
if $has_glow {
# glow: Best option - beautiful markdown rendering
^glow $file --pager
} else if $has_bat {
# bat: Good syntax highlighting
^bat $file --style=auto --language=markdown --pager=always
} else if $has_mdcat {
# mdcat: Markdown-specific renderer
if $has_less {
^mdcat $file | ^less -R
} else {
^mdcat $file
}
} else if $has_less {
# less: Basic pager with search
^less -R $file
} else {
# Fallback: Direct print with manual pagination
let content = (open $file)
print $content
print ""
print $"(_ansi yellow_bold)💡 TIP: Install a markdown renderer for better viewing(_ansi reset)"
print ""
print $" (_ansi green)glow(_ansi reset) [recommended]: brew install glow (_ansi default_dimmed)# macOS(_ansi reset)"
print $" apt install glow (_ansi default_dimmed)# Ubuntu/Debian(_ansi reset)"
print $" dnf install glow (_ansi default_dimmed)# Fedora(_ansi reset)"
print ""
print $" (_ansi green)bat(_ansi reset): brew install bat (_ansi default_dimmed)# macOS(_ansi reset)"
print $" apt install bat (_ansi default_dimmed)# Ubuntu/Debian(_ansi reset)"
print ""
}
}
# Main guide command dispatcher
export def handle_guide_command [
command: string
ops: string
flags: record
] {
match $command {
"guide" | "guides" => { handle_guide $ops $flags }
"sc" | "shortcuts" => { display_cheatsheet_summary }
_ => {
print $"❌ Unknown guide command: ($command)"
exit 1
}
}
}
# Guide handler
def handle_guide [ops: string, flags: record] {
let topic = if ($ops | is-empty) { "list" } else { $ops }
match $topic {
"list" => { guide_list }
"sc" => { display_cheatsheet_summary }
"quickstart" | "shortcuts" | "quick" => { guide_quickstart }
"from-scratch" | "scratch" | "start" | "deploy" => { guide_from_scratch }
"update" | "upgrade" => { guide_update }
"customize" | "custom" | "layers" | "templates" => { guide_customize }
_ => {
print $"❌ Unknown guide topic: ($topic)"
print ""
guide_list
exit 1
}
}
}
# List available guides
def guide_list [] {
print ""
print $"(_ansi cyan_bold)📚 AVAILABLE GUIDES(_ansi reset)"
print ""
print $" (_ansi green_bold)sc(_ansi reset) - Quick command reference (_ansi yellow_bold)[FASTEST](_ansi reset)"
print $" (_ansi green)quickstart(_ansi reset) - Full command cheatsheet with examples"
print $" (_ansi green)from-scratch(_ansi reset) - Step-by-step guide from init to deploy"
print $" (_ansi green)update(_ansi reset) - Update existing infrastructure"
print $" (_ansi green)customize(_ansi reset) - Customize infrastructure with layers"
print ""
print $"(_ansi yellow_bold)SHORTCUTS:(_ansi reset)"
print $" • (_ansi cyan_bold)sc, shortcuts(_ansi reset) → Quick reference (_ansi default_dimmed)fastest, no pager(_ansi reset)"
print $" • (_ansi cyan)quickstart(_ansi reset) → quick"
print $" • (_ansi cyan)from-scratch(_ansi reset) → scratch, start, deploy"
print $" • (_ansi cyan)update(_ansi reset) → upgrade"
print $" • (_ansi cyan)customize(_ansi reset) → custom, layers, templates"
print ""
print $"(_ansi yellow_bold)USAGE:(_ansi reset)"
print $" provisioning sc - Quick command reference (_ansi yellow)fastest(_ansi reset)"
print $" provisioning shortcuts - Same as sc"
print $" provisioning guide quickstart - Full command reference"
print $" provisioning guide from-scratch - Complete deployment guide"
print $" provisioning guide update - Infrastructure update guide"
print $" provisioning guide customize - Customization guide"
print ""
print $"(_ansi cyan_bold)💡 BETTER VIEWING EXPERIENCE(_ansi reset)"
print ""
print " For beautifully formatted guides, install a markdown renderer:"
print ""
print $" (_ansi green)glow(_ansi reset) [recommended] - Beautiful markdown rendering"
print $" macOS: (_ansi cyan)brew install glow(_ansi reset)"
print $" Ubuntu/Debian: (_ansi cyan)apt install glow(_ansi reset)"
print $" Fedora: (_ansi cyan)dnf install glow(_ansi reset)"
print $" Other: (_ansi cyan)go install github.com/charmbracelet/glow@latest(_ansi reset)"
print ""
print $" (_ansi green)bat(_ansi reset) - Syntax highlighting"
print $" macOS: (_ansi cyan)brew install bat(_ansi reset)"
print $" Ubuntu/Debian: (_ansi cyan)apt install bat(_ansi reset)"
print ""
print $" (_ansi default_dimmed)Without a renderer, guides display as plain text with pagination.(_ansi reset)"
print ""
print $"(_ansi yellow_bold)💡 All guides provide copy-paste ready commands(_ansi reset)"
print ""
}
# Display quickstart cheatsheet
def guide_quickstart [] {
let guide_file = "docs/guides/quickstart-cheatsheet.md"
if not ($guide_file | path exists) {
print $"❌ Guide file not found: ($guide_file)"
print $" Expected location: ($env.PWD)/($guide_file)"
exit 1
}
# Display guide with formatting
print ""
print ""
print $"(_ansi cyan_bold)═══════════════════════════════════════════════════════════════(_ansi reset)"
print $"(_ansi cyan_bold)║ (_ansi yellow_bold)📚 QUICK COMMAND CHEATSHEET(_ansi reset) (_ansi cyan_bold)║(_ansi reset)"
print $"(_ansi cyan_bold)═══════════════════════════════════════════════════════════════(_ansi reset)"
print ""
# Display guide with markdown rendering
display_markdown $guide_file
print ""
print $"(_ansi green_bold)✅ Cheatsheet displayed(_ansi reset)"
print ""
print $"(_ansi yellow)Other guides:(_ansi reset)"
print $" • provisioning guide from-scratch"
print $" • provisioning guide update"
print $" • provisioning guide customize"
# Show cheatsheet summary
display_cheatsheet_summary
}
# Display from-scratch guide
def guide_from_scratch [] {
let guide_file = "docs/guides/from-scratch.md"
if not ($guide_file | path exists) {
print $"❌ Guide file not found: ($guide_file)"
print $" Expected location: ($env.PWD)/($guide_file)"
exit 1
}
# Display guide with formatting
print ""
print $"(_ansi green_bold)═══════════════════════════════════════════════════════════════(_ansi reset)"
print $"(_ansi green_bold)║ (_ansi yellow_bold)🚀 FROM SCRATCH: COMPLETE INFRASTRUCTURE DEPLOYMENT(_ansi reset) (_ansi green_bold)║(_ansi reset)"
print $"(_ansi green_bold)═══════════════════════════════════════════════════════════════(_ansi reset)"
print ""
# Display guide with markdown rendering
display_markdown $guide_file
print ""
print $"(_ansi green_bold)✅ Guide displayed(_ansi reset)"
print ""
print $"(_ansi yellow)Other guides:(_ansi reset)"
print $" • provisioning guide quickstart"
print $" • provisioning guide update"
print $" • provisioning guide customize"
# Show cheatsheet summary
display_cheatsheet_summary
}
# Display update guide
def guide_update [] {
let guide_file = "docs/guides/update-infrastructure.md"
if not ($guide_file | path exists) {
print $"❌ Guide file not found: ($guide_file)"
print $" Expected location: ($env.PWD)/($guide_file)"
exit 1
}
# Display guide with formatting
print ""
print $"(_ansi blue_bold)═══════════════════════════════════════════════════════════════(_ansi reset)"
print $"(_ansi blue_bold)║ (_ansi yellow_bold)🔄 UPDATE EXISTING INFRASTRUCTURE(_ansi reset) (_ansi blue_bold)║(_ansi reset)"
print $"(_ansi blue_bold)═══════════════════════════════════════════════════════════════(_ansi reset)"
print ""
# Display guide with markdown rendering
display_markdown $guide_file
print ""
print $"(_ansi green_bold)✅ Guide displayed(_ansi reset)"
print ""
print $"(_ansi yellow)Other guides:(_ansi reset)"
print $" • provisioning guide quickstart"
print $" • provisioning guide from-scratch"
print $" • provisioning guide customize"
# Show cheatsheet summary
display_cheatsheet_summary
}
# Display customize guide
def guide_customize [] {
let guide_file = "docs/guides/customize-infrastructure.md"
if not ($guide_file | path exists) {
print $"❌ Guide file not found: ($guide_file)"
print $" Expected location: ($env.PWD)/($guide_file)"
exit 1
}
# Display guide with formatting
print ""
print $"(_ansi purple_bold)═══════════════════════════════════════════════════════════════(_ansi reset)"
print $"(_ansi purple_bold)║ (_ansi yellow_bold)🎨 CUSTOMIZE INFRASTRUCTURE(_ansi reset) (_ansi purple_bold)║(_ansi reset)"
print $"(_ansi purple_bold)═══════════════════════════════════════════════════════════════(_ansi reset)"
print ""
# Display guide with markdown rendering
display_markdown $guide_file
print ""
print $"(_ansi green_bold)✅ Guide displayed(_ansi reset)"
print ""
print $"(_ansi yellow)Other guides:(_ansi reset)"
print $" • provisioning guide quickstart"
print $" • provisioning guide from-scratch"
print $" • provisioning guide update"
# Show cheatsheet summary
display_cheatsheet_summary
}