Thank you for your interest in contributing to Skypier Blackhole! We welcome contributions from the community.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR-USERNAME/skypier-blackhole.git cd skypier-blackhole - Set up the development environment:
# Ensure you have Rust 1.70+ installed rustup update stable # Build the project cargo build # Run tests to verify setup cargo test
-
Create a feature branch from
main:git checkout -b feature/your-feature-name
-
Make your changes, following our code style guidelines
-
Run the test suite:
cargo test -
Run the linter:
cargo clippy -- -D warnings
-
Format your code:
cargo fmt
-
Commit your changes with a descriptive message:
git commit -m "Add feature: description of your change" -
Push to your fork and open a Pull Request
- Follow standard Rust conventions and idioms
- Use
cargo fmtto format all code - Ensure
cargo clippypasses without warnings - Write documentation comments for public APIs
- Keep functions focused and reasonably sized
- Prefer explicit error handling over
.unwrap()
- Add tests for new functionality
- Ensure all existing tests pass before submitting
- Integration tests go in the
tests/directory - Use the scripts in
scripts/for manual testing:scripts/test-dns.sh- DNS functionalityscripts/test-signals.sh- Signal handlingscripts/test-wildcards.sh- Wildcard matchingscripts/test-cli.sh- CLI commands
- Keep PRs focused on a single feature or fix
- Write a clear description of what the PR does
- Reference any related issues
- Ensure CI passes before requesting review
- Be responsive to feedback and review comments
When reporting bugs, please include:
- Your operating system and version
- Rust version (
rustc --version) - Steps to reproduce the issue
- Expected vs actual behavior
- Relevant log output
We welcome feature suggestions! Please open an issue describing:
- The problem you're trying to solve
- Your proposed solution
- Any alternatives you've considered
By contributing, you agree that your contributions will be licensed under the same terms as the project (MIT License).
Feel free to open a Discussion on GitHub if you have questions about contributing.