A modern, high-performance package manager meta-tool ecosystem built in Rust.
This repository contains the Santa package manager and its supporting libraries. Santa helps developers install and manage packages across multiple platforms and package managers with a single command.
This is a Cargo workspace containing three packages:
π¦ santa-cli
The main Santa command-line application. Install and manage packages across Homebrew, Cargo, APT, Pacman, Scoop, Nix, and more.
For users: See the santa-cli README for installation and usage instructions.
# Install Santa
cargo install santa-cli
# Use Santa
santa install ripgrep bat fdπ santa-data
Core data models, schemas, and CCL configuration parser for Santa. Reusable library for tools that need to work with Santa's configuration format.
use santa_data::parser::parse_ccl_config;
let config = parse_ccl_config(ccl_string)?;π§ sickle
A robust Rust parser for CCL (Categorical Configuration Language) with Serde support. General-purpose CCL parsing library.
use sickle::{parse, from_str};
let model = parse(ccl_string)?;
let config: MyConfig = from_str(ccl_string)?;- User Documentation: santa-cli README
- API Documentation: docs.rs/santa-data | docs.rs/sickle
- Contributing: See Development below
- 67-90% faster concurrent package operations via async execution
- Professional-grade caching with TTL and LRU eviction
- Memory efficient with zero unnecessary allocations
- 144 comprehensive tests with >90% code coverage across all crates
- Security hardening with input sanitization and injection protection
- Production-ready error handling and structured logging
- Zero
unwrap()andtodo!()in production code - Strong typing with builder patterns and validation
- Cross-platform support for Linux, macOS, and Windows
- Modular design with reusable libraries
Santa uses just for development workflow automation.
# Clone repository
git clone https://github.com/tylerbutler/santa.git
cd santa
# Install development tools
just setup
# Run quick checks
just check-quick
# Run all tests
just test
# Development with hot reload
just dev| Command | Description |
|---|---|
just |
Show all available commands |
just build |
Build all workspace crates |
just test |
Run all tests across workspace |
just lint |
Run clippy linting |
just check-all |
Run complete pre-commit checks |
just docs |
Generate and open documentation |
# Run all tests
just test
# Run with coverage
just test-coverage
# Fast parallel testing
just test-fast
# Run specific crate tests
cd crates/santa-cli && cargo test
cd crates/santa-data && cargo test
cd crates/sickle && cargo test# Run all benchmarks
just bench
# Save baseline
just bench-baseline my-feature
# Compare against baseline
just bench-compare my-feature# Check code style
just check-style
# Auto-fix issues
just fix
# Security audit
just audit
# Check dependencies
just depssanta/
βββ crates/
β βββ santa-cli/ # Main CLI application
β β βββ src/
β β βββ tests/
β β βββ Cargo.toml
β βββ santa-data/ # Data models and CCL parser
β β βββ src/
β β βββ Cargo.toml
β βββ sickle/ # CCL parser library
β βββ src/
β βββ tests/
β βββ examples/
β βββ Cargo.toml
βββ data/ # Package data and definitions
βββ templates/ # Script generation templates
βββ scripts/ # Development and analysis scripts
βββ justfile # Development task runner
βββ Cargo.toml # Workspace configuration
βββ README.md # This file
- CCL Format - Modern configuration language (via sickle)
- Hot-Reloading - Real-time configuration updates
- Environment Overrides - All settings configurable via env vars
- Migration Support - Transparent YAML-to-CCL migration
- Multi-Source - Support for 7+ package managers
- Async Operations - High-performance concurrent execution
- Intelligent Caching - Reduces redundant operations
- Cross-Platform - Works on Linux, macOS, Windows
- Safe-by-Default - Generates scripts instead of direct execution
- Platform-Specific - Shell (.sh), PowerShell (.ps1), Batch (.bat)
- Template-Driven - Uses Tera templating engine
- Security-First - Input sanitization prevents injection
| Package Manager | Platforms | Status |
|---|---|---|
| Homebrew | macOS, Linux | β Full Support |
| Cargo | All | β Full Support |
| APT | Debian, Ubuntu | β Full Support |
| Pacman | Arch Linux | β Full Support |
| AUR | Arch Linux | β Full Support |
| Scoop | Windows | β Full Support |
| Nix | All | β Full Support |
We welcome contributions! Please follow these guidelines:
- Install Rust (1.80+): https://rustup.rs/
- Install Just:
cargo install just - Clone and setup:
git clone https://github.com/tylerbutler/santa.git cd santa just setup
- Zero
unwrap()andtodo!()in production code - Comprehensive error handling with context
- Tests required for all new functionality
- Documentation required for public APIs
- Security-first approach to all changes
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Run checks:
just check-all - Add tests for new functionality
- Update documentation as needed
- Submit PR with clear description
- Unit tests for new functionality
- Integration tests for user-facing features
- Property-based tests for parsers and data structures
- Benchmarks for performance-critical changes
Santa uses GitHub Actions for continuous integration:
- Multi-platform testing (Linux, macOS, Windows)
- Comprehensive test suite with coverage reporting via Codecov
- Security auditing and dependency checking
- Performance regression testing
- Automated releases with cross-platform binaries via cargo-dist
Run the same checks locally:
# Run CI checks
just ci
# Platform-specific CI
just ci-linux
just ci-macos
just ci-windowsSanta uses release-plz for automated releases:
- Changes are merged to
main - release-plz creates release PRs with updated changelogs
- Merging the release PR triggers:
- Version bumps
- Git tags
- cargo-dist builds cross-platform binaries
- GitHub release creation
- crates.io publication
Santa is designed for high performance:
- 67-90% faster than sequential package operations
- Async I/O with tokio for non-blocking operations
- Professional caching via moka with TTL and LRU eviction
- Memory efficient with zero-copy string handling where possible
Results from criterion benchmarks on typical workloads:
- Package status checking: 70-90% faster than sequential
- Concurrent installations: 67-85% faster than sequential
- Configuration parsing: <1ms for typical configs
Run benchmarks:
just bench- User Guide: santa-cli README
- API Docs: docs.rs/santa-data | docs.rs/sickle
- CCL Format: See sickle documentation
- Project Docs: CLAUDE.md - Project context and architecture
Generate local documentation:
just docsAll packages in this workspace are licensed under the MIT License.
- Built with the modern Rust ecosystem
- Inspired by cross-platform package management needs
- Uses CCL (Categorical Configuration Language) for configuration
- Thanks to all contributors and the open source community
Made with β€οΈ by Tyler Butler and contributors