[package]
name = "santa"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
description = "a tool that manages packages across different platforms"
homepage = "https://github.com/tylerbutler/santa"
repository.workspace = true
rust-version.workspace = true
categories.workspace = true
keywords.workspace = true
readme.workspace = true
publish = true
default-run = "santa"

[features]
default = []
bench = []

[dependencies]
# Error handling with context and chaining
anyhow = "1.0.100"

# Command-line argument parsing with derive macros and colors
clap = { version = "4.5.53", features = ["color", "derive", "cargo", "wrap_help"] }

# Markdown documentation generation for CLI
clap-markdown = "0.1.5"

# Shell completion generation for CLI commands
clap_complete = "4.5.61"

# Terminal color output for user-friendly messages
colored = "3.0.0"

# Configuration file loading and management
config = { version = "0.15.19", default-features = false, features = ["toml"] }

# Interactive CLI prompts and user input
dialoguer = "0.12.0"

# Cross-platform directory path resolution
directories = "6.0.0"

# Serialization framework with derive macros
serde = { version = "1.0.228", features = ["derive"] }

# String-based enum serialization for configuration
serde-enum-str = "0.4.0"

# CCL configuration parser with serde support
sickle = { version = "0.1.1", path = "../sickle", features = ["serde"] }
santa-data = { version = "0.3.0", path = "../santa-data" }

# Structured logging and tracing
tracing = "0.1.43"

# Tracing subscriber with environment-based filtering
tracing-subscriber = { version = "0.3.22", features = ["env-filter"] }

# ASCII table formatting for command output
tabular = "0.2.0"

# Async runtime with process execution and synchronization primitives
tokio = { version = "1.47.2", features = ["process", "rt-multi-thread", "macros", "time", "sync"] }

# Async utilities and combinators
futures = "0.3.31"

# High-performance caching with TTL and LRU eviction
moka = { version = "0.12.11", features = ["sync", "logging"] }

# Builder pattern code generation
derive_builder = "0.20.2"

# Cross-platform executable discovery
which = "8.0.0"

# Data validation with derive macros
validator = { version = "0.20", features = ["derive"] }

# File system change notifications for hot-reloading
notify = "8.2.0"

# Shell command escaping to prevent injection attacks
shell-escape = "0.1.5"

# Template engine for script generation (Jinja2-compatible, minimal deps)
minijinja = "2.13.0"

# Date/time handling for script metadata
chrono = { version = "0.4.42", features = ["serde"] }

# Structured error types with derive macros
thiserror = "2.0.17"

# HTTP client for fetching remote sources (lightweight, minimal deps)
minreq = { version = "2.14.1", features = ["https-rustls"] }

[dev-dependencies]
# Parameterized testing framework with fixtures
rstest = "0.18"

# Temporary file and directory creation for tests
tempfile = "3.21"

# Property-based testing with random input generation
proptest = "1.7"

# Integration testing for CLI applications
assert_cmd = "2.0"

# Predicate functions for test assertions
predicates = "3.1"

# Benchmarking framework with HTML reports
criterion = { version = "0.5", features = ["html_reports", "async_tokio"] }

[[bin]]
name = "santa"
path = "src/main.rs"

[[bin]]
name = "generate-index"
path = "src/bin/generate_index.rs"

[[bench]]
name = "subprocess_performance"
harness = false

# cargo-dist: This package generates distributable binaries
[package.metadata.dist]
dist = true
