Merge _configs/ into config/ for single configuration directory. Update all path references. Changes: - Move _configs/* to config/ - Update .gitignore for new patterns - No code references to _configs/ found Impact: -1 root directory (layout_conventions.md compliance)
258 lines
6.1 KiB
TOML
258 lines
6.1 KiB
TOML
# Wizard questions for deployment generator
|
|
# Defines interactive questions with types, validation, and conditions
|
|
#
|
|
# Format:
|
|
# [[questions]]
|
|
# id = "unique_identifier"
|
|
# text = "Question to ask user"
|
|
# type = "string|bool|number|choice|multichoice|list"
|
|
# required = true/false
|
|
# default = "default_value"
|
|
# validate = "regex_pattern or numeric_range (1..100)"
|
|
# followup = [{condition = "...", ...question...}]
|
|
|
|
# Basic project information
|
|
|
|
[[questions]]
|
|
id = "project_name"
|
|
text = "Project name"
|
|
type = "string"
|
|
required = true
|
|
default = "myproject"
|
|
validate = "^[a-z][a-z0-9-]*$" # lowercase with hyphens
|
|
|
|
[[questions]]
|
|
id = "project_version"
|
|
text = "Project version (semantic versioning)"
|
|
type = "string"
|
|
required = true
|
|
default = "1.0.0"
|
|
validate = "^\\d+\\.\\d+\\.\\d+$" # x.y.z
|
|
|
|
[[questions]]
|
|
id = "project_description"
|
|
text = "Project description (optional)"
|
|
type = "string"
|
|
required = false
|
|
default = ""
|
|
|
|
# Service availability
|
|
|
|
[[questions]]
|
|
id = "has_cli"
|
|
text = "Does the project have a CLI binary?"
|
|
type = "bool"
|
|
required = true
|
|
default = "true"
|
|
|
|
[[questions.followup]]
|
|
condition = "has_cli == true"
|
|
id = "cli_name"
|
|
text = "CLI binary name"
|
|
type = "string"
|
|
required = true
|
|
default = "${project_name}-cli"
|
|
|
|
[[questions]]
|
|
id = "has_api"
|
|
text = "Does the project have a REST API server?"
|
|
type = "bool"
|
|
required = true
|
|
default = "false"
|
|
|
|
[[questions.followup]]
|
|
condition = "has_api == true"
|
|
id = "api_port"
|
|
text = "API server default port"
|
|
type = "number"
|
|
required = true
|
|
default = "3000"
|
|
validate = "1..65535"
|
|
|
|
[[questions.followup]]
|
|
condition = "has_api == true"
|
|
id = "api_health_check"
|
|
text = "API health check endpoint"
|
|
type = "string"
|
|
required = true
|
|
default = "/health"
|
|
|
|
[[questions]]
|
|
id = "has_tui"
|
|
text = "Does the project have a Terminal UI (TUI)?"
|
|
type = "bool"
|
|
required = true
|
|
default = "false"
|
|
|
|
[[questions.followup]]
|
|
condition = "has_tui == true"
|
|
id = "tui_name"
|
|
text = "TUI binary name"
|
|
type = "string"
|
|
required = true
|
|
default = "${project_name}-tui"
|
|
|
|
[[questions]]
|
|
id = "has_dashboard"
|
|
text = "Does the project have a web dashboard?"
|
|
type = "bool"
|
|
required = true
|
|
default = "false"
|
|
|
|
[[questions.followup]]
|
|
condition = "has_dashboard == true"
|
|
id = "dashboard_port"
|
|
text = "Dashboard default port"
|
|
type = "number"
|
|
required = true
|
|
default = "8080"
|
|
validate = "1..65535"
|
|
|
|
[[questions.followup]]
|
|
condition = "has_dashboard == true"
|
|
id = "dashboard_requires_api"
|
|
text = "Does dashboard require the API?"
|
|
type = "bool"
|
|
required = true
|
|
default = "true"
|
|
|
|
# Database configuration
|
|
|
|
[[questions]]
|
|
id = "databases"
|
|
text = "Supported databases (select all that apply)"
|
|
type = "multichoice"
|
|
required = true
|
|
default = ["sqlite"]
|
|
options = [
|
|
{ id = "sqlite", name = "SQLite", description = "File-based, no server" },
|
|
{ id = "postgres", name = "PostgreSQL", description = "Server-based RDBMS" },
|
|
{ id = "mysql", name = "MySQL", description = "Open source RDBMS" },
|
|
{ id = "surrealdb", name = "SurrealDB", description = "Multi-model database" },
|
|
]
|
|
|
|
[[questions]]
|
|
id = "default_database"
|
|
text = "Default database type"
|
|
type = "choice"
|
|
required = true
|
|
default = "sqlite"
|
|
# Options derived from previous 'databases' answer
|
|
|
|
[[questions]]
|
|
id = "min_memory_mb"
|
|
text = "Minimum memory requirement (MB)"
|
|
type = "number"
|
|
required = true
|
|
default = "128"
|
|
validate = "64..65536"
|
|
|
|
# Caching
|
|
|
|
[[questions]]
|
|
id = "has_cache"
|
|
text = "Does the project support caching?"
|
|
type = "bool"
|
|
required = true
|
|
default = "false"
|
|
|
|
[[questions.followup]]
|
|
condition = "has_cache == true"
|
|
id = "cache_types"
|
|
text = "Supported cache backends"
|
|
type = "multichoice"
|
|
required = true
|
|
default = ["redis"]
|
|
options = [
|
|
{ id = "redis", name = "Redis", description = "In-memory data structure store (recommended)" },
|
|
{ id = "memcached", name = "Memcached", description = "Distributed memory cache" },
|
|
]
|
|
|
|
# Deployment presets
|
|
|
|
[[questions]]
|
|
id = "presets_to_generate"
|
|
text = "Which deployment presets to generate?"
|
|
type = "multichoice"
|
|
required = true
|
|
default = ["local", "dev"]
|
|
options = [
|
|
{ id = "local", name = "Local", description = "CLI only (development machine)" },
|
|
{ id = "dev", name = "Development", description = "Full stack with provctl (dev environment)" },
|
|
{ id = "staging", name = "Staging", description = "Multi-machine with provisioning (staging environment)" },
|
|
{ id = "production", name = "Production", description = "HA setup with provisioning (production environment)" },
|
|
]
|
|
|
|
[[questions]]
|
|
id = "default_preset_manager"
|
|
text = "Default preset manager (for non-local presets)"
|
|
type = "choice"
|
|
required = true
|
|
default = "provctl"
|
|
options = [
|
|
{ id = "manual", name = "Manual", description = "User runs commands manually" },
|
|
{ id = "provctl", name = "provctl", description = "Local orchestration" },
|
|
{ id = "provisioning", name = "provisioning", description = "Infrastructure as code" },
|
|
]
|
|
|
|
# Output
|
|
|
|
[[questions]]
|
|
id = "output_directory"
|
|
text = "Output directory for generated files"
|
|
type = "string"
|
|
required = true
|
|
default = "."
|
|
validate = "^[\\.\\-/a-zA-Z0-9_]+$"
|
|
|
|
# Additional syntaxis-specific settings (future extension points)
|
|
[[questions]]
|
|
id = "include_docker_configs"
|
|
text = "Generate Docker configuration files?"
|
|
type = "bool"
|
|
required = false
|
|
default = "false"
|
|
|
|
[[questions]]
|
|
id = "include_kubernetes_manifests"
|
|
text = "Generate Kubernetes manifests?"
|
|
type = "bool"
|
|
required = false
|
|
default = "false"
|
|
|
|
[[questions.followup]]
|
|
condition = "include_kubernetes_manifests == true"
|
|
id = "k8s_namespace"
|
|
text = "Kubernetes namespace"
|
|
type = "string"
|
|
required = true
|
|
default = "syntaxis"
|
|
validate = "^[a-z0-9-]+$"
|
|
|
|
[[questions]]
|
|
id = "vapora_enabled"
|
|
text = "Enable VAPORA taskservs integration?"
|
|
type = "bool"
|
|
required = false
|
|
default = "false"
|
|
|
|
[[questions.followup]]
|
|
condition = "vapora_enabled == true"
|
|
id = "vapora_description"
|
|
text = "Description for VAPORA integration"
|
|
type = "string"
|
|
required = true
|
|
default = "Integration as VAPORA taskservs"
|
|
|
|
[[questions.followup]]
|
|
condition = "vapora_enabled == true"
|
|
id = "vapora_taskservs_mode"
|
|
text = "VAPORA taskservs mode"
|
|
type = "choice"
|
|
required = true
|
|
default = "full"
|
|
options = [
|
|
{ id = "full", name = "Full", description = "Full VAPORA taskservs integration" },
|
|
{ id = "lite", name = "Lite", description = "Lightweight VAPORA taskservs integration" },
|
|
]
|