SNP (Shell Not Pass)

A production-ready, fast, and reliable pre-commit framework written in Rust. SNP is a high-performance replacement for pre-commit with 100% configuration compatibility and comprehensive feature parity.
⚡ Why SNP?
- 🔥 Performance: 3-5x faster than Python pre-commit with state-of-the-art optimizations
- Advanced work-stealing task scheduler for optimal parallel execution
- Multi-tier caching architecture (L1/L2/L3) with intelligent promotion/demotion
- Lock-free data structures for improved concurrency performance
- Bloom filter-based negative caching for performance optimization
- Batch regex processing with compiled RegexSet optimization
- Arena-based memory management for hot execution paths
- Zero-copy string operations and incremental file change detection
- 🛡️ Reliability: Memory safety and comprehensive error handling through Rust
- 🔄 Compatibility: 100% compatible with existing
.pre-commit-config.yaml files
- 📦 Easy Installation: Single binary with no dependencies
- 🌍 Cross-Platform: Works on Linux, macOS, and Windows
- ✅ Production Ready: Comprehensive test suite with 758+ tests across 49 test files
- 🔗 Language Support: Comprehensive language plugins: Python, Rust, Node.js, Go, Ruby, System commands, and Docker
- ⚙️ Advanced Features: Hook chaining, dependency management, and API integration
🚀 Quick Start
Installation
# Install from crates.io
cargo install snp
# Or download from releases
curl -L https://github.com/devops247-online/snp/releases/latest/download/snp-linux-x86_64.tar.gz | tar xz
Basic Usage
# Install git hooks with backup support
snp install
# Run hooks on staged files (full execution engine)
snp run
# Run hooks on all files with parallel processing
snp run --all-files
# Update hook versions with real GitHub/GitLab API
snp autoupdate
# Update specific repositories
snp autoupdate --repo https://github.com/psf/black
# Dry run to see what would be updated
snp autoupdate --dry-run
# Run with hook chaining and dependencies
snp run --show-deps
📋 Configuration
SNP uses the same configuration format as pre-commit. Create a .pre-commit-config.yaml file:
repos:
- repo: https://github.com/psf/black
rev: 23.1.0
hooks:
- id: black
- repo: https://github.com/pycqa/flake8
rev: 6.0.0
hooks:
- id: flake8
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v8.57.0
hooks:
- id: eslint
files: \.(js|ts|jsx|tsx)$
- repo: https://github.com/golangci/golangci-lint
rev: v1.54.2
hooks:
- id: golangci-lint
- repo: https://github.com/rubocop/rubocop
rev: v1.56.0
hooks:
- id: rubocop
✨ Features
SNP is a feature-complete pre-commit framework with advanced capabilities:
🎯 Core Features
- Complete Hook Execution Engine: Full subprocess management and execution control
- Multi-Language Support: Comprehensive language plugins with modular architecture (Python, Rust, Node.js, Go, Ruby, System commands, Docker)
- Git Integration: Comprehensive staged file processing and repository management
- Configuration Compatibility: 100% compatible with pre-commit YAML configurations
- File Classification: Intelligent file type detection and filtering
🚀 Advanced Features
- Work-Stealing Scheduler: Advanced parallel execution with optimal load balancing and task stealing
- Multi-Tier Caching: Intelligent L1/L2/L3 cache hierarchy with automatic promotion/demotion
- Lock-Free Architecture: High-performance concurrent data structures for zero-contention execution
- Hook Chaining: Dependency management and execution ordering with graph algorithms
- API Integration: Real GitHub/GitLab API calls for version updates
- Configuration Migration: Seamless migration from Python pre-commit
- Output Aggregation: Comprehensive result formatting and reporting
- Concurrent Processing: Advanced file locking, deadlock prevention, and parallel execution
- Environment Management: Language-specific environment setup and SQLite-based caching
- Container Support: Docker-based hook execution for isolated environments
- Performance Optimization:
- Bloom filter negative caching for fast miss detection
- Batch regex processing with compiled RegexSet optimization
- Arena-based memory management for reduced allocations
- Zero-copy string operations and incremental file change detection
- Async-first file I/O with intelligent batching
🔧 Commands
SNP supports all pre-commit commands with full feature parity:
snp run - Run hooks with comprehensive execution engine
snp install - Install git hooks with backup and restoration
snp uninstall - Remove git hooks cleanly
snp autoupdate - Update repository versions with real API integration
snp clean - Clean cache files and environments
snp gc - Garbage collect unused repositories
snp validate-config - Comprehensive YAML schema validation
snp try-repo - Test hooks from repositories
🏗️ Development
Prerequisites
Building
git clone https://github.com/devops247-online/snp.git
cd snp
cargo build --release
Testing
# Run all tests (758+ comprehensive tests)
cargo test
# Run with coverage
cargo install cargo-llvm-cov
cargo llvm-cov
# Run specific test suites
cargo test --test integration_tests
cargo test --test autoupdate_tests
cargo test --test python_language_tests
cargo test --test hook_chaining_tests
cargo test --test work_stealing_scheduler_tests
cargo test --test multi_tier_cache_tests
# Run all 49 test suites
find tests/ -name "*.rs" -exec basename {} .rs \; | xargs -I {} cargo test --test {}
Development Workflow
SNP follows Test-Driven Development (TDD):
- Red Phase: Write failing tests
- Green Phase: Implement minimal solution
- Refactor Phase: Clean up and optimize
🎯 Project Status
SNP is production-ready with comprehensive features implemented. The project has achieved 95%+ feature completeness with all core functionality and extensive language support working.
🏆 Implementation Status
📊 Testing & Quality
- 758+ Comprehensive Tests: Across 49 test suites covering all functionality including:
- Core execution engine and hook processing
- Work-stealing scheduler and parallel execution
- Multi-tier caching system with deadlock prevention
- Lock-free data structures and concurrent access
- Language plugins (Python, Rust, Node.js, Go, Ruby, Docker)
- Performance optimization features and memory management
- Multi-Toolchain Support: Compatible with Rust stable, beta, and nightly
- CI/CD Pipeline: Robust testing with network failure resilience
- Real-World Testing: Live API integration testing with GitHub/GitLab
- Cross-Platform: Verified on Linux, macOS, and Windows
📚 Documentation
🤝 Contributing
We welcome contributions! Please see our contributing guidelines for details.
Key Areas
- Language plugin implementations
- Performance optimizations
- Cross-platform compatibility
- Documentation improvements
📖 Migration from pre-commit
SNP is designed as a drop-in replacement:
- Install SNP:
cargo install snp
- Replace
pre-commit with snp in your commands
- Your existing
.pre-commit-config.yaml works unchanged
🔗 Related Projects
📜 License
Licensed under the MIT License. See LICENSE for details.
🙏 Acknowledgments
- The pre-commit project for the original concept and design
- The Rust community for excellent tooling and libraries
- All contributors who help make SNP better