Contributions are always welcome! And there is a multitude of ways in which you can help depending on what you like to do, or are good at. Anything from documentation, code cleanup, issue completion, new features, you name it, even filing issues is contributing and greatly appreciated!
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 :)
To test with all features both enabled and disabled, you can run these commands:
$ cargo test --no-default-features $ cargo test --features "yaml unstable"
Alternatively, if you have just
installed you can run the prebuilt recipes. Not using just
is perfectly fine as well, it simply bundles commands automatically.
For example, to test the code, as above simply run:
$ just run-tests
From here on, I will list the appropriate cargo
command as well as the just
command.
Sometimes it's helpful to only run a subset of the tests, which can be done via:
$ cargo test --test <test_name> # Or $ just run-test <test_name>
During the CI process clap
runs against many different lints using clippy
. In order to check if these lints pass on your own computer prior to submitting a PR you'll need a nightly compiler.
In order to check the code for lints run either:
$ rustup override add nightly $ cargo build --features lints $ rustup override remove # Or $ just lint
Another helpful technique is to see the clap
debug output while developing features. In order to see the debug output while running the full test suite or individual tests, run:
$ cargo test --features debug # Or for individual tests $ cargo test --test <test_name> --features debug # The corresponding just command for individual debugging tests is: $ just debug <test_name>
I use a conventional changelog format so I can update my changelog automatically using clog
TYPE(COMPONENT): MESSAGE
where TYPE
is one of the following:api
- An addition to the APIsetting
- A new AppSettings
variantfeat
- A new feature of an existing APIimp
- An improvement to an existing feature/APIperf
- 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 be git rebase
'ed away)chore
- Catch all or things that have to do with the build system, etcexamples
- Changes to existing example, or a new exampleCOMPONENT
is optional, and may be a single file, directory, or logical component. Parenthesis can be omitted if you are opting not to use the COMPONENT
.cargo test --features "yaml unstable"
), alternatively just run-tests
if you have just
installed.cargo build --features lints
) (requires a nightly compiler), alternatively just lint
git rebase
into concise commits and remove --fixup
s or wip
commits (git rebase -i HEAD~NUM
where NUM
is number of commits back to start the rebase)git push origin $your-branch
)master
! (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 :)
There are a few goals of clap
that I‘d like to maintain throughout contributions. If your proposed changes break, or go against any of these goals we’ll discuss the changes further before merging (but will not be ignored, all contributes are welcome!). These are by no means hard-and-fast rules, as I'm no expert and break them myself from time to time (even if by mistake or ignorance :P).
clap
should be low since the main program is the star of the showpanic!
on developer error, exit gracefully on end-user error