Crates.io | cargo-publish-workspace-v2 |
lib.rs | cargo-publish-workspace-v2 |
version | 0.2.1 |
source | src |
created_at | 2023-04-05 14:34:50.447569 |
updated_at | 2023-04-05 21:39:21.310534 |
description | Cargo command to publish a workspace mono repo |
homepage | https://github.com/mwrites/cargo-publish-workspace |
repository | https://github.com/mwrites/cargo-publish-workspace |
max_upload_size | |
id | 831122 |
size | 33,535 |
This tool extends Cargo to allow you to publish a workspace, a rust mono repo.
Ensure that you have a fairly recent version of rust/cargo installed. On Ubuntu you would also need to install libssl-dev
and pkg-config
packages.
$ cargo install cargo-publish-workspace-v2
$ cargo publish-workspace --help
Usage: cargo publish-workspace [OPTIONS] --crate-prefix <CRATE_PREFIX> [-- <cargo-publish-args>...]
Arguments:
[cargo-publish-args]... Additional arguments to pass to 'cargo publish'
Options:
-p, --crate-prefix <CRATE_PREFIX> The prefix of the crates to publish, e.g. 'my-repo-crate-'
--dry-run Run without publishing, same as --show-order
--show-order Only display the order of crates to be published
--target-version <TARGET_VERSION> Specify the version to use instead of CI_TAG environment variable
--aligned-versions-only Verify that every Cargo.toml version are aligned with the version to publish
--token <TOKEN> Specify the token to use instead of CARGO_REGISTRY_TOKEN environment variable
--exclude <EXCLUDE> Crates to exclude and not modify (arg can be supplied multiple times)
--verify-upload-retries <VERIFY_UPLOAD_RETRIES> The number of retries to attempt when verifying the upload of a crate [default: 30]
-h, --help Print help
-V, --version Print version
Publish
$ cd my-mono-repo
$ cargo publish-workspace --target-version 1.0.0 --token CARGO_REGISTRY_TOKEN --crate-prefix PREFIX
Dry run and show order of crates to be published
$ cd my-mono-repo
$ cargo publish-workspace --crate-prefix mat-clockwork --show-order
Finished show dependencies order
0. mat-clockwork-utils
1. mat-clockwork-cron
2. mat-clockwork-thread-program-v1
3. mat-clockwork-network-program
Excluding a crate from being published
cargo publish-workspace --target-version 1.0.0 --token CARGO_REGISTRY_TOKEN --crate-prefix PREFIX --exclude crate-1 --exclude crate-2
You can also set
publish = false
in the crate Cargo.toml
This tool has been made to work with a CI such as GitHub Action.
Make sure to setup the GitHub secrets variable for CARGO_REGISTRY_TOKEN
with the appropriate value.
cargo publish-workspace --crate-prefix PREFIX
Apache-2.0/MIT