# Rustelo Framework Dependency Configuration
# Generated by cargo rustelo v0.1.0 from content-website template
# Generated at: 2025-10-28T18:46:17.145459+00:00
#
# This file controls how your project depends on the Rustelo framework.
# The `cargo rustelo update` command uses this to manage safe updates.

[dependencies]
# Dependency resolution strategy
# Options: "git", "crates-io", "path", "auto"
strategy = "{{dependency_strategy}}"

# Git dependency configuration (when strategy = "git")
[dependencies.git]
repository = "https://github.com/your-org/rustelo.git"
branch = "main"
# tag = "v1.0.0"  # Use specific tag for production

# Crates.io configuration (when strategy = "crates-io")
[dependencies.crates_io]
# Framework crates will be fetched from crates.io
# This is the recommended approach for production use

# Path dependency configuration (when strategy = "path")
# Only use during local framework development!
[dependencies.path]
base_path = "../rustelo/crates"

# Version specifications for framework crates
[versions]
rustelo-core = "{{rustelo_core_version}}"
rustelo-web = "{{rustelo_web_version}}"
rustelo-auth = "{{rustelo_auth_version}}"
rustelo-content = "{{rustelo_content_version}}"

# Features to enable for each crate
[features]
rustelo-core = []
rustelo-web = ["ssr"]
rustelo-auth = []
rustelo-content = []

# Feature/module tracking and discovery
[features.available]
# Available but not yet enabled features for discovery notifications
rustelo-core = ["tracing", "metrics", "caching", "async-runtime"]
rustelo-web = ["islands", "streaming", "hydration", "prerendering"]
rustelo-auth = ["oauth2", "jwt", "session", "2fa", "social-login"]
rustelo-content = ["markdown", "search", "cms", "multilang", "versioning"]
rustelo-analytics = ["tracking", "events", "reporting", "dashboards"]
rustelo-realtime = ["websockets", "sse", "notifications", "collaboration"]
rustelo-deployment = ["docker", "k8s", "serverless", "edge"]
rustelo-testing = ["integration", "e2e", "performance", "security"]

# Asset source configuration
[assets]
# Asset source strategy: "local", "embedded", "download", "auto"
source = "local"
download_location = ".rustelo-assets/"
cache_enabled = {{cache_enabled}}
auto_update = {{auto_update}}
notification_methods = [{{#each notification_methods}}"{{this}}"{{#unless @last}}, {{/unless}}{{/each}}]

# Local asset configuration (for framework development)
[assets.local]
framework_path = "{{framework_path}}"
# Watch for changes and auto-sync
watch_changes = true
# Auto-sync specific asset types
sync_assets = ["justfiles", "scripts", "content", "docker"]

# Download asset configuration (for production)
[assets.download]
base_url = "https://raw.githubusercontent.com/your-org/rustelo/main/templates"
# Cache downloaded assets locally
cache_enabled = {{cache_enabled}}
cache_dir = ".rustelo-assets/"
cache_ttl_hours = 24

# Embedded asset configuration (fallback)
[assets.embedded]
# Use CLI embedded assets as fallback
fallback_enabled = true

# Development workflow settings
[development]
# Enable development mode features
enabled = {{dev_mode}}

# Auto-detect framework changes
auto_detect_changes = true

# Sync framework assets on cargo rustelo commands
auto_sync_assets = {{auto_update}}

# Validate asset consistency
validate_assets = true

# Update policy
[update]
# How to handle updates
# Options: "conservative", "aggressive", "manual"
policy = "conservative"

# Automated update checking
[update.automation]
# Enable automated update checks
enabled = {{auto_update}}

# Check frequency: "never", "daily", "weekly", "monthly", "on_build"
check_frequency = "weekly"

# What to check for updates
check_targets = ["dependencies", "assets", "templates"]

# Notification methods for updates
notify_methods = [{{#each notification_methods}}"{{this}}"{{#unless @last}}, {{/unless}}{{/each}}]

# Auto-update behavior in non-interactive mode
auto_update_policy = "conservative"

# Fail build if critical updates available
fail_on_critical_updates = false

# Log update status to specific file
update_log_file = ".rustelo/update-status.json"

# Which files can be safely regenerated during updates
regenerate = [
    "justfile",
    "package.json",
    "unocss.config.ts",
    "rustelo.toml"
]

# Files that should never be touched during updates
protected = [
    "src/**/*.rs",
    "assets/**/*",
    "content/**/*",
    "local-tasks.just",
    "unocss.local.ts",
    "rustelo.local.toml"
]

# Backup before updates
backup = true
backup_dir = ".rustelo-backups"

# Template configuration
[template]
variant = "content-website"
generated_at = "2025-10-28T18:46:17.145459+00:00"
rustelo_version = "0.1.0"

# Contribution detection and automation
[contributions]
# Enable contribution scanning
enabled = true

# Scan frequency: "never", "weekly", "monthly", "on_build", "on_release"
scan_frequency = "monthly"

# What types of contributions to detect
detect_types = ["improvements", "bug_fixes", "new_features"]

# Auto-package contributions
auto_package = false
package_directory = ".rustelo/contributions"

# Notification methods for contribution opportunities
notify_methods = ["log"]

# Minimum confidence level to suggest contributions (0.0-1.0)
confidence_threshold = 0.7

# Notification configuration
[notifications]
# Global notification preferences
enabled = true

# Notification channels
[notifications.channels]
# Log to stdout/stderr
console = { enabled = true, level = "info" }

# Write to JSON file for CI/CD integration
file = {
    enabled = false,
    path = ".rustelo/notifications.json",
    format = "json"
}

# Webhook for external systems
webhook = { enabled = false }

# GitHub integration
github = { enabled = false }

# CI/CD specific settings
[ci_cd]
# Enable CI/CD optimizations
enabled = false

# Exit codes for different scenarios
exit_codes = {
    updates_available = 1,
    critical_updates = 2,
    contributions_ready = 3,
    up_to_date = 0
}

# Cache settings for CI/CD
cache = {
    enabled = true,
    ttl_hours = 24,
    cache_key = "rustelo-{project}-{framework_version}"
}
