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:
The main Santa command-line application. Install and manage packages across Homebrew, Cargo, APT, Pacman, Scoop, Nix, and more.
For users: See the User Guide for complete usage instructions.
# Install Santa
cargo install santa-cli
# Check package status
santa status
# Install missing packages (generates script)
santa install
# Review and run the generated script
sh ~/.santa/scripts/install_*.sh# Add packages to your tracking list
santa add ripgrep cargo
santa add bat brew
# Check what's installed
santa status --all
# Update source definitions
santa sources update
# Generate installation script for specific source
santa install brew
# Direct execution mode (use with caution)
santa install -xCore 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: User Guide | Configuration Guide | Troubleshooting
- API Documentation: docs.rs/santa-data | docs.rs/sickle
- Contributing: CONTRIBUTING.md
- 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 - Installation, commands, and workflows
- Configuration Guide - CCL format and configuration options
- Troubleshooting - Common issues and solutions
- CONTRIBUTING.md - Development setup and guidelines
- API Docs: docs.rs/santa-data | docs.rs/sickle
- 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