mirror of
https://github.com/clap-rs/clap
synced 2024-12-14 14:52:33 +00:00
3.1 KiB
3.1 KiB
How to Contribute
Contributions are always welcome! Please use the following guidelines when contributing to clap
- Fork
clap
- Clone your fork (
git clone https://github.com/$YOUR_USERNAME/clap-rs && cd clap-rs
) - Create new branch (
git checkout -b new-branch
) - Make your changes, and commit (
git commit -am "your message"
)
- I use a conventional changelog format so I can update my changelog using clog
- In addition to the conventions defined above, I also use
imp
,wip
,examples
. - Format your commit subject line using the following format:
TYPE(COMPONENT): MESSAGE
whereTYPE
is one of the following:feat
- A new featureimp
- An improvement to an existing featureperf
- A performance improvementdocs
- Changes to documentation onlytests
- Changes to the testing framework or tests onlyfix
- A bug fixrefactor
- Code functionality doesn't change, but underlying structure maystyle
- Stylistic changes only, no functionality changeswip
- A work in progress commit (Should typically begit rebase
'ed away)chore
- Catch all or things that have to do with the build system, etcexamples
- Changes to existing example, or a new example
- The
COMPONENT
is optional, and may be a single file, directory, or logical component. Can be omitted if commit applies globally
- Run the tests (
cargo test --features "yaml unstable"
) - Run the lints (
cargo build --features lints
) (requires a nightly compiler) git rebase
into concise commits and remove--fixup
s (git rebase -i HEAD~NUM
whereNUM
is number of commits back)- Push your changes back to your fork (
git push origin $your-branch
) - Create a pull request! (You can also create the pull request first, and we'll merge when ready. This a good way to discuss proposed changes.)
Another really great way to help is if you find an interesting, or helpful way in which to use clap
. You can either add it to the examples/ directory, or file an issue and tell me. I'm all about giving credit where credit is due :)
Goals
There are a few goals of clap
that I'd like to maintain throughout contributions.
- Remain backwards compatible when possible
- If backwards compatibility must be broken, use deprecation warnings if at all possible before removing legacy code
- This does not apply for security concerns
clap
officially supports the current stable version of Rust, minus two releases (i.e. if 1.13.0 is current,clap
must support 1.11.0 and beyond)
- Parse arguments quickly
- Parsing of arguments shouldn't slow down usage of the main program
- This is also true of generating help and usage information (although slightly less stringent, as the program is about to exit)
- Try to be cognizant of memory usage
- Once parsing is complete, the memory footprint of
clap
should be low since the main program is the star of the show
- Once parsing is complete, the memory footprint of
panic!
on developer error, exit gracefully on end-user error