| Crates.io | santa |
| lib.rs | santa |
| version | 0.3.1 |
| created_at | 2022-04-01 06:40:44.760369+00 |
| updated_at | 2026-01-18 21:37:51.939836+00 |
| description | a tool that manages packages across different platforms |
| homepage | https://github.com/tylerbutler/santa |
| repository | https://github.com/tylerbutler/santa |
| max_upload_size | |
| id | 560144 |
| size | 865,563 |
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 -x
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)?;
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)?;
unwrap() and todo!() in production codeSanta 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 deps
santa/
├── 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
| 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:
cargo install justgit clone https://github.com/tylerbutler/santa.git
cd santa
just setup
unwrap() and todo!() in production codegit checkout -b feature/my-featurejust check-allSanta uses GitHub Actions for continuous integration:
Run the same checks locally:
# Run CI checks
just ci
# Platform-specific CI
just ci-linux
just ci-macos
just ci-windows
Santa uses release-plz for automated releases:
mainSanta is designed for high performance:
Results from criterion benchmarks on typical workloads:
Run benchmarks:
just bench
Generate local documentation:
just docs
All packages in this workspace are licensed under the MIT License.
Made with ❤️ by Tyler Butler and contributors