# Publishing
This workspace contains two crates. `to-values` re-exports the optional
procedural macro from `to-values-derive`, so the macro crate must be published
and indexed first.
1. Update versions, release notes, and the minimum supported Rust version when
appropriate. Keep the exact `to-values-derive` dependency version in the
root manifest synchronized with the derive crate's version.
2. Verify the workspace locally:
```sh
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-features
cargo test -p to-values --no-default-features
cargo doc --workspace --all-features --no-deps
```
3. Inspect and fully verify the independently publishable derive crate:
```sh
cargo package -p to-values-derive --allow-dirty
```
4. Publish `to-values-derive` and wait until crates.io has indexed it:
```sh
cargo publish -p to-values-derive
```
5. Package and publish the facade crate. At this point Cargo can resolve and
fully verify its newly published dependency:
```sh
cargo package -p to-values
cargo publish -p to-values
```
Use `cargo publish --dry-run` in place of either publish command when doing a
final pre-release check. Do not use `--allow-dirty` for an actual release.