Thanks for your interest in contributing! 🎉
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/extstat.git - Create a branch:
git checkout -b feature/my-feature - Make your changes
- Test:
cargo test && cargo clippy - Commit:
git commit -m "feat: add awesome feature" - Push:
git push origin feature/my-feature - Open a Pull Request
- Rust 1.70+ (install via rustup)
- Cargo (comes with Rust)
# Debug build (fast compilation)
cargo build
# Release build (optimized)
cargo build --release
# Run directly
cargo run -- /path/to/scan -c# Run tests
cargo test
# Run with test data
./test.sh
# Check code quality
cargo clippy
# Format code
cargo fmt- Formatting: Run
cargo fmtbefore committing - Linting: Fix all
cargo clippywarnings - Comments: Document public APIs and complex logic
- Tests: Add tests for new features
Follow Conventional Commits:
feat:New featurefix:Bug fixdocs:Documentation onlystyle:Formatting, missing semicolons, etc.refactor:Code restructuringperf:Performance improvementstest:Adding testschore:Maintenance tasks
Examples:
feat: add JSON export option
fix: handle permission errors gracefully
docs: update README with new examples
perf: optimize parallel scanning for large directories
- Update documentation if you're adding features
- Add tests for new functionality
- Update CHANGELOG.md with your changes
- Ensure CI passes (tests, clippy, fmt)
- Request review from maintainers
extstat/
├── src/
│ └── main.rs # Main application code
├── tests/ # Integration tests (to be added)
├── Cargo.toml # Dependencies
├── README.md # Main documentation
└── CONTRIBUTING.md # This file
- Add more output formats (CSV, JSON)
- Improve error messages
- Add more CLI options
- Write integration tests
- Add progress bar during scan
- Filter by file modification date
- Compare two scans (before/after)
- Add verbose mode for debugging
- Interactive TUI mode (ncdu-like)
- Drill-down: extension → directories
- Cross-platform support (Windows, macOS)
- Remote filesystem support
Open an issue with:
- Use case: Why is this needed?
- Proposed solution: How should it work?
- Examples: CLI usage examples
Include:
- Version:
extstat --version - OS: Linux distro, kernel version
- Command: Exact command run
- Expected: What should happen
- Actual: What actually happened
- Logs: Any error messages
- Open a Discussion
- Check existing Issues
Be respectful, constructive, and professional. We're all here to build something useful together.
By contributing, you agree that your contributions will be licensed under the MIT License.
Thanks for contributing! 🦀✨