Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great.
Contributions to this project are released to the public under the project's open source license.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
These are one time installations required to be able to test your changes locally as part of the pull request (PR) submission process.
- Install Rust through download | through Homebrew
- Fork and clone the repository
- Make sure the tests pass on your machine:
make test - Make sure linter passes on your machine:
make lint - Create a new branch:
git checkout -b my-branch-name - Make your change, add tests, and make sure the tests and linter still pass
- Push to your fork and submit a pull request
- Pat yourself on the back and wait for your pull request to be reviewed and merged.
Here are a few things you can do that will increase the likelihood of your pull request being accepted:
- Follow the style guide.
- Write tests.
- Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests.
- Write a good commit message.
Crates are published to crates.io with
Trusted Publishing, so there is no long-lived API
token stored in this repository. The Publish crates workflow exchanges its GitHub OIDC identity
for a token that is revoked when the run ends.
- Bump
versionin the crate'sCargo.tomland merge that change tomain. - Run the
Publish cratesworkflow via Run workflow, pick the crate, and optionally tick dry-run first to package and verify it without uploading. If a newly added crate isn't in the dropdown yet, type its name into crate_name_override instead — and add it to the dropdown inpublish-crates.yamlwhile you're there.
A crate has to be published manually once before crates.io will let you configure a trusted
publisher for it. Configure it at https://crates.io/crates/<crate>/settings/trusted-publishing
with repository github/rust-gems, workflow publish-crates.yaml, and environment crates-io.
The environment name must match the workflow's environment: exactly or the token exchange fails.