Thank you for your interest in contributing to Bum! We welcome contributions from everyone.
# Clone the repository
git clone https://github.com/owenizedd/bum.git
cd bum
# Install dependencies
bun install
# Build the project
cargo build --release
# Run tests
cargo test --lib
cargo clippy
cargo fmt --check- Follow Rust best practices and idioms
- Run
cargo fmtbefore committing - Ensure
cargo clippypasses with no warnings - Write tests for new features
We use behavior-based testing (blackbox testing):
# Run all tests
cargo test --lib
# Run specific test
cargo test test_version_persistence
# Run with output
cargo test -- --nocaptureTests should focus on user behavior rather than implementation details:
- ✅ Test what users care about (version switching, persistence)
- ❌ Don't test internal implementation details
Use clear, descriptive commit messages:
# Good
git commit -m "Add retry logic to install script"
git commit -m "Fix version persistence when switching between versions"
# Avoid
git commit -m "fix bug"
git commit -m "update code"- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Test thoroughly (
cargo test --lib,cargo clippy) - Commit with clear messages
- Push to your fork (
git push origin feature/amazing-feature) - Open a Pull Request
- Describe what your PR does and why
- Reference any related issues
- Ensure all CI checks pass
- Keep PRs focused (one feature/fix per PR)
Bum is built with:
- Rust - Core CLI logic and business logic
- NAPI-RS - Node.js bindings for npm distribution
- Bun - Package manager and build tooling
bum/
├── src/
│ ├── main.rs # CLI entry point
│ ├── lib.rs # NAPI bindings
│ ├── commands.rs # Core commands (use, remove, list)
│ └── bun.rs # Bun version management
├── .github/workflows/
│ ├── ci.yml # npm publish workflow
│ └── deploy.yml # GitHub Releases workflow
├── npm/ # Platform-specific npm packages
└── install.sh # Installation script
See RELEASE.md for detailed release instructions.
- Open an issue for bug reports or feature requests
- Check existing issues before creating a new one
By contributing, you agree that your contributions will be licensed under the MIT License.