Thank you for your interest in contributing! This document provides guidelines and instructions for contributing.
- Rust (latest stable, MSRV: 1.83.0)
- Git
Please read the detailed guides in the docs/ folder:
- Building Guide - Instructions for cloning with submodules and building from source
- Architecture - Overview of the code structure and module system
# Clone the repository (recursive for templates submodule)
git clone --recursive https://github.com/AriajSarkar/gitignore-gen.git
cd gitignore-gen
# Build the project
cargo build
# Run tests
cargo test
# Run the CLI
cargo runThis project uses standard Rust tooling for code quality:
# Format code
cargo fmt
# Run linter
cargo clippyAll code must pass cargo fmt --check and cargo clippy before merging.
We use Conventional Commits specification:
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
style |
Formatting, no code change |
refactor |
Code change that neither fixes a bug nor adds a feature |
perf |
Performance improvement |
test |
Adding or updating tests |
chore |
Maintenance tasks |
feat(analyzer): add TypeScript detection
fix(fetcher): handle API rate limiting
docs: update installation instructions
- Fork the repository and create your branch from
dev - Make changes following our code style guidelines
- Add tests for new functionality
- Update documentation if needed
- Submit PR against the
devbranch
- Code compiles without warnings (
cargo build) - All tests pass (
cargo test) - Code is formatted (
cargo fmt --check) - Clippy passes (
cargo clippy) - Commit messages follow Conventional Commits
- Documentation updated if needed
Please include:
- OS and version
- Rust version (
rustc --version) - Steps to reproduce
- Expected vs actual behavior
Please describe:
- The problem you're trying to solve
- Your proposed solution
- Alternative approaches considered
By contributing, you agree that your contributions will be licensed under the same license as the project (MIT OR Apache-2.0).