# Configuration for Local Development Example
# This file provides environment-specific settings for the local development setup

[core]
name = "local-development-example"
version = "1.0.0"

[paths]
# Use current directory for this example
base = "/usr/local/provisioning"
infra = "."
kloud = "."

[debug]
# Enable debug mode for learning and troubleshooting
enabled = true
log_level = "debug"
metadata = true
check = false
remote = false
no_terminal = false

[output]
# Human-readable output formats for learning
format = "yaml"
file_viewer = "less"

# Provider configuration for local development
[providers]
default = "local"

[providers.local]
# Local provider settings
interface = "CLI"
container_runtime = "docker"  # or "podman"
network_driver = "bridge"

# Local development network settings
network_cidr = "192.168.100.0/24"
enable_port_forwarding = true

# Resource limits for local development
[providers.local.resource_limits]
max_memory_per_server = "1GB"
max_cpu_cores_per_server = 2
max_storage_per_server = "20GB"

# SOPS configuration (simplified for local development)
[sops]
use_sops = false  # Disable encryption for local dev to keep things simple
# If you want to practice with SOPS locally, set to true and configure keys

# Development-specific settings
[development]
# Auto-approve actions for faster development workflow
auto_approve = true

# Cleanup settings
cleanup_on_error = true
cleanup_on_shutdown = false  # Keep resources between sessions

# Development helper settings
enable_dev_mode = true
verbose_logging = true
debug_on_error = true

# Cache settings for development
[cache]
enabled = false  # Disable caching for development to see real-time changes
path = "./.provisioning-cache"
max_size = "100MB"

# Task service runtime paths
[taskservs]
run_path = "./run/taskservs"

[clusters]
run_path = "./run/clusters"

# Generation settings
[generation]
dir_path = "./generated"
defs_file = "defs.toml"

# Local development notifications (disabled for quiet operation)
[notifications]
enabled = false

# Tool configuration for local development
[tools]
use_kcl = true
use_kcl_plugin = true
use_tera_plugin = true

# Environment overrides for development
[environments.development]
debug.enabled = true
debug.log_level = "debug"
providers.default = "local"
auto_approve = true

# Validation settings for development
[validation]
strict_mode = false  # Relaxed validation for learning
warn_on_missing = true
fail_on_error = false

# Development-specific limits and quotas
[limits]
max_servers = 5
max_services_per_server = 10
max_concurrent_operations = 2
timeout_seconds = 300

# Local development extensions
[extensions]
path = ""
mode = "development"
profile = "learning"

# Security settings (relaxed for local development)
[security]
require_confirmation = false  # Speed up development workflow
strict_validation = false
log_sensitive_data = false

# Performance settings for local development
[performance]
parallel_operations = 2  # Limit parallelism for local resources
cache_enabled = false
timeout_multiplier = 1.5  # Give more time for local operations

# Local development specific configurations
[local_dev]
# Automatically clean up resources older than this
auto_cleanup_age = "7d"

# Enable development helpers
enable_aliases = true
enable_shortcuts = true

# Port ranges for development services
[local_dev.port_ranges]
web = "8000-8999"
api = "9000-9999"
database = "5000-5999"
cache = "6000-6999"

# Development database settings
[local_dev.database_defaults]
auto_create_dev_db = true
enable_query_logging = true
relaxed_security = true  # WARNING: Only for local development!

# Container settings for local development
[containers]
auto_remove = true  # Clean up containers automatically
enable_debug_mode = true
mount_source_code = true  # Mount local directories for development

# Network settings for local development
[network]
enable_host_networking = true  # Allow easy access from host
auto_assign_ports = true
enable_service_discovery = true

# Monitoring settings (lightweight for local development)
[monitoring]
enabled = true
retention_period = "24h"  # Short retention for local dev
metrics_interval = "30s"
enable_alerts = false  # No alerts needed for local development

# Backup settings for local development
[backup]
enabled = false  # No backups needed for disposable local environment
auto_backup = false

# Integration settings
[integration]
# Enable integrations useful for development
enable_git_hooks = false
enable_ide_integration = true
enable_hot_reload = true

# Learning and documentation helpers
[learning]
show_helpful_tips = true
verbose_explanations = true
include_examples = true
enable_interactive_help = true

# Example-specific metadata
[example]
name = "local-development"
description = "Basic local development environment setup"
difficulty = "beginner"
estimated_time = "15-30 minutes"
requirements = ["docker", "4GB RAM", "10GB disk"]
learning_objectives = [
    "Understanding basic provisioning concepts",
    "Setting up local infrastructure",
    "Managing servers and services",
    "Using the provisioning CLI"
]
