Thank you for your interest in contributing to mdget! Contributions from the community help make this tool better for everyone.
By contributing to this project, you agree to abide by our Code of Conduct.
- How Can I Contribute?
- Development Setup
- Coding Standards & Style Guide
- Pull Request Checklist
- Questions or Security Reporting
If you find a bug, please open an issue on GitHub. Before creating a new issue, search existing ones to make sure it hasn't been reported yet. When filing a bug report, please include:
- A clear description of the issue.
- Steps to reproduce the bug (including the exact command and target URL).
- The expected behavior vs. actual behavior.
- Your OS, Rust version, and
mdgetversion.
We are always looking for ways to improve mdget (e.g., adding support for more content types, caching optimizations, or filtering features). Open an issue with the tag enhancement and describe:
- The problem you want to solve.
- The proposed solution or feature design.
- Why this enhancement would be useful to other users/agents.
- Fork the repository and create your branch from
main(e.g.,git checkout -b feature/my-cool-feature). - Make your changes, keeping them as concise and focused as possible.
- Add or update unit/integration tests covering your changes.
- Ensure all tests and style checks pass (see Development Setup).
- Push your branch to GitHub and open a Pull Request.
Ensure you have the following installed on your system:
- Rust Toolchain: Rust 1.90+ (Edition 2024).
- Cargo: Usually bundled with Rust.
- Just (Optional): A handy command runner to build/check the project easily.
Clone the repository and build the project:
git clone https://github.com/hiranp/mdget.git
cd mdget
cargo buildRun unit and integration tests:
cargo testRun the local binary with debug output enabled:
RUST_LOG=debug cargo run -- fetch https://example.comFormat code and check for lints:
# Format code
cargo fmt --all -- --check
# Check clippy lints
cargo clippy --all-targets --all-features -- -D warningsIf you have just installed, you can run all local CI checks with:
just check- Idiomatic Rust: Write clean, modern Rust adhering to common idioms and compiler recommendations.
- Rust Edition: We use the Rust 2024 edition. Make sure your toolchain supports it.
- Formatting: All code must conform to
rustfmt. Runcargo fmt --allbefore committing. - Linting: Keep code warning-free. Always run
cargo clippy --all-targets -- -D warnings. - Commit Messages: We recommend using descriptive commit messages, ideally following Conventional Commits:
feat: add support for PDF content extractionfix: resolve quotes escaping in meta tag parsingdocs: update setup instructions in READMEtest: add integration test for redirect chains
Before submitting your PR, please verify the following:
- Code is formatted with
cargo fmt. - Code passes all
cargo clippylints without warnings. - All tests in
cargo testpass successfully. - You have added tests covering the new functionality or bug fix.
- Documentation (README or inline docs/docstrings) has been updated if applicable.
- The PR title and description clearly explain what changes were made and why.
If you have questions about the codebase or wish to report a security vulnerability, please reach out to the project maintainers:
- Contact Email:
hiranp@yahoo.com - GitHub Issues: For non-sensitive bugs and feature requests.