Contributing to cargo-wasi
This section contains instructions on how to get this project up and running for development. Source code for this project lives on GitHub at https://github.com/bytecodealliance/cargo-wasi.
Prerequisites
-
The
cargo-wasi
subcommand is written in Rust, so you'll want Rust installed -
Running tests requires
wasmtime
is installed and in$PATH
or an existing runtime provided viaCARGO_TARGET_WASM32_WASI_RUNNER
.
Getting the code
You'll clone the code via git
:
$ git clone https://github.com/bytecodealliance/cargo-wasi
Testing changes
We'd like tests ideally to be written for all changes. Test can be run via:
$ cargo test
You'll be adding tests primarily to tests/tests/*.rs
.
Submitting changes
Changes to cargo-wasi
are managed through Pull Requests, and anyone is
more than welcome to submit a pull request! We'll try to get to reviewing it or
responding to it in at most a few days.
Code Formatting
Code is required to be formatted with the current Rust stable's cargo fmt
command. This is checked on CI.
Continuous Integration
The CI for the cargo-wasi
repository is relatively significant. It tests
changes on Windows, macOS, and Linux. It also performs a "dry run" of the
release process to ensure that release binaries can be built and are ready to be
published.
Publishing a New Version
Publication of this crate is entirely automated via CI. A publish happens
whenever a tag is pushed to the repository, so to publish a new version you'll
want to make a PR that bumps the version numbers (see the bump.rs
scripts in
the root of the repository), merge the PR, then tag the PR and push the tag.
That should trigger all that's necessary to publish all the crates and binaries
to crates.io.