provisioning/tools/codegen/help_string_extractor.nu
2026-01-14 02:59:52 +00:00

143 lines
7.0 KiB
Plaintext

# Help System String Extractor
# Extracts user-visible strings from help system for i18n
# Processes help_system.nu and generates Fluent catalogs
# Extract main help menu strings
export def extract-help-main [] {
[
{key: "help-main-title", en: "PROVISIONING SYSTEM"}
{key: "help-main-subtitle", en: "Layered Infrastructure Automation"}
{key: "help-main-categories", en: "COMMAND CATEGORIES"}
{key: "help-main-categories-hint", en: "Use 'provisioning help <category>' for details"}
{key: "help-main-infrastructure-name", en: "infrastructure"}
{key: "help-main-infrastructure-desc", en: "Server, taskserv, cluster, VM, and infra management"}
{key: "help-main-orchestration-name", en: "orchestration"}
{key: "help-main-orchestration-desc", en: "Workflow, batch operations, and orchestrator control"}
{key: "help-main-development-name", en: "development"}
{key: "help-main-development-desc", en: "Module discovery, layers, versions, and packaging"}
{key: "help-main-workspace-name", en: "workspace"}
{key: "help-main-workspace-desc", en: "Workspace and template management"}
{key: "help-main-platform-name", en: "platform"}
{key: "help-main-platform-desc", en: "Orchestrator, Control Center, MCP, and services"}
{key: "help-main-setup-name", en: "setup"}
{key: "help-main-setup-desc", en: "System setup, configuration, and initialization"}
{key: "help-main-authentication-name", en: "authentication"}
{key: "help-main-authentication-desc", en: "JWT authentication, MFA, and sessions"}
{key: "help-main-plugins-name", en: "plugins"}
{key: "help-main-plugins-desc", en: "Plugin management and plugin operations"}
{key: "help-main-utilities-name", en: "utilities"}
{key: "help-main-utilities-desc", en: "Cache, SOPS, providers, SSH, and tools"}
{key: "help-main-tools-name", en: "tools"}
{key: "help-main-tools-desc", en: "Tool and dependency management"}
{key: "help-main-vm-name", en: "vm"}
{key: "help-main-vm-desc", en: "Virtual machine operations and lifecycle"}
{key: "help-main-diagnostics-name", en: "diagnostics"}
{key: "help-main-diagnostics-desc", en: "System status, health checks, and debugging"}
{key: "help-main-concepts-name", en: "concepts"}
{key: "help-main-concepts-desc", en: "Architecture and key concepts"}
{key: "help-main-guides-name", en: "guides"}
{key: "help-main-guides-desc", en: "Quick guides and cheatsheets"}
{key: "help-main-integrations-name", en: "integrations"}
{key: "help-main-integrations-desc", en: "Prov-ecosystem and provctl bridge"}
{key: "help-error-unknown-category", en: "Unknown help category"}
{key: "help-error-available-categories", en: "Available help categories"}
{key: "help-error-use-help", en: "Use 'provisioning help' for main help"}
]
}
# Extract infrastructure help strings
export def extract-help-infrastructure [] {
[
{key: "help-infrastructure-title", en: "SERVER & INFRASTRUCTURE"}
{key: "help-infra-server", en: "Server Operations"}
{key: "help-infra-server-create", en: "Create a new server"}
{key: "help-infra-server-list", en: "List all servers"}
{key: "help-infra-server-status", en: "Show server status"}
{key: "help-infra-server-delete", en: "Delete server"}
{key: "help-infra-taskserv", en: "TaskServ Management"}
{key: "help-infra-taskserv-create", en: "Deploy taskserv to server"}
{key: "help-infra-taskserv-list", en: "List taskservs"}
{key: "help-infra-taskserv-logs", en: "View taskserv logs"}
{key: "help-infra-taskserv-delete", en: "Remove taskserv"}
{key: "help-infra-cluster", en: "Cluster Management"}
{key: "help-infra-cluster-create", en: "Create cluster"}
{key: "help-infra-cluster-add-node", en: "Add cluster node"}
{key: "help-infra-cluster-remove-node", en: "Remove cluster node"}
{key: "help-infra-cluster-status", en: "Get cluster status"}
{key: "help-infra-vm", en: "Virtual Machine Operations"}
{key: "help-infra-vm-create", en: "Create virtual machine"}
{key: "help-infra-vm-start", en: "Start VM"}
{key: "help-infra-vm-stop", en: "Stop VM"}
{key: "help-infra-vm-reboot", en: "Reboot VM"}
{key: "help-infra-tip", en: "Use filters and selectors to target multiple resources"}
]
}
# Extract orchestration help strings
export def extract-help-orchestration [] {
[
{key: "help-orchestration-title", en: "ORCHESTRATION & WORKFLOWS"}
{key: "help-orch-control", en: "Orchestrator Management"}
{key: "help-orch-start", en: "Start orchestrator [--background]"}
{key: "help-orch-stop", en: "Stop orchestrator"}
{key: "help-orch-status", en: "Check if running"}
{key: "help-orch-health", en: "Health check"}
{key: "help-orch-logs", en: "View logs [--follow]"}
{key: "help-orch-workflows", en: "Single Task Workflows"}
{key: "help-orch-workflow-list", en: "List all workflows"}
{key: "help-orch-workflow-status", en: "Get workflow status"}
{key: "help-orch-workflow-monitor", en: "Monitor in real-time"}
{key: "help-orch-workflow-stats", en: "Show statistics"}
{key: "help-orch-workflow-cleanup", en: "Clean old workflows"}
{key: "help-orch-batch", en: "Multi-Provider Batch Operations"}
{key: "help-orch-batch-submit", en: "Submit Nickel workflow [--wait]"}
{key: "help-orch-batch-list", en: "List batches [--status Running]"}
{key: "help-orch-batch-status", en: "Get batch status"}
{key: "help-orch-batch-monitor", en: "Real-time monitoring"}
{key: "help-orch-batch-rollback", en: "Rollback failed batch"}
{key: "help-orch-batch-cancel", en: "Cancel running batch"}
{key: "help-orch-batch-stats", en: "Show statistics"}
{key: "help-orch-tip", en: "Batch workflows support mixed providers: UpCloud, AWS, and local"}
{key: "help-orch-example", en: "provisioning batch submit deployment.ncl --wait"}
]
}
# Generate Fluent format from string catalog
export def generate-fluent-help [
strings: list
--language: string = "en-US"
] {
let header = $"# Help System Translations\n# Language: ($language)\n# Category: Help text and menu items\n# Generated by help_string_extractor.nu\n\n"
let fluent_entries = (
$strings
| reduce -f [] { |item, acc|
let value = (if $language == "en-US" { $item.en } else { "[NEEDS TRANSLATION]" })
let line = ($item.key + " = " + $value)
$acc | append $line
}
| str join "\n"
)
$header + $fluent_entries + "\n"
}
# Combine all help strings
export def extract-all-help [] {
let main = (extract-help-main)
let infra = (extract-help-infrastructure)
let orch = (extract-help-orchestration)
($main | append $infra | append $orch)
}