decrating: Phase 7 — path+version deps + workspace.dependencies + default-members#78
Conversation
…ault-members Converts the workspace to publish-shaped form. All intra-workspace sibling dependencies now use [workspace.dependencies] with both path and version, making them valid for cargo publish. Each member consumes via `dep.workspace = true`. Adds `default-members = ["crates/shipper-cli", "crates/shipper"]` to root so root-level package commands target the two product crates by default rather than all 12. Validation: cargo package --list succeeds for every published crate. Per docs/decrating-plan.md §6 Phase 7.
There was a problem hiding this comment.
Code Review
This pull request centralizes dependency management by defining intra-workspace crates within the root Cargo.toml and updating individual member crates to utilize workspace = true. It also configures default-members for the workspace. Feedback was provided to sort the dependency lists alphabetically in both the root and the shipper crate's configuration to improve readability and maintainability.
| shipper = { path = "crates/shipper", version = "0.3.0-rc.1" } | ||
| shipper-cli = { path = "crates/shipper-cli", version = "0.3.0-rc.1" } | ||
| shipper-config = { path = "crates/shipper-config", version = "0.3.0-rc.1" } | ||
| shipper-types = { path = "crates/shipper-types", version = "0.3.0-rc.1" } | ||
| shipper-duration = { path = "crates/shipper-duration", version = "0.3.0-rc.1" } | ||
| shipper-retry = { path = "crates/shipper-retry", version = "0.3.0-rc.1" } | ||
| shipper-encrypt = { path = "crates/shipper-encrypt", version = "0.3.0-rc.1" } | ||
| shipper-webhook = { path = "crates/shipper-webhook", version = "0.3.0-rc.1" } | ||
| shipper-registry = { path = "crates/shipper-registry", version = "0.3.0-rc.1" } | ||
| shipper-sparse-index = { path = "crates/shipper-sparse-index", version = "0.3.0-rc.1" } | ||
| shipper-cargo-failure = { path = "crates/shipper-cargo-failure", version = "0.3.0-rc.1" } | ||
| shipper-output-sanitizer = { path = "crates/shipper-output-sanitizer", version = "0.3.0-rc.1" } |
There was a problem hiding this comment.
The intra-workspace dependencies in [workspace.dependencies] are not sorted alphabetically. Maintaining an alphabetical order for dependencies improves readability and makes it easier to locate specific crates as the workspace grows.
| shipper = { path = "crates/shipper", version = "0.3.0-rc.1" } | |
| shipper-cli = { path = "crates/shipper-cli", version = "0.3.0-rc.1" } | |
| shipper-config = { path = "crates/shipper-config", version = "0.3.0-rc.1" } | |
| shipper-types = { path = "crates/shipper-types", version = "0.3.0-rc.1" } | |
| shipper-duration = { path = "crates/shipper-duration", version = "0.3.0-rc.1" } | |
| shipper-retry = { path = "crates/shipper-retry", version = "0.3.0-rc.1" } | |
| shipper-encrypt = { path = "crates/shipper-encrypt", version = "0.3.0-rc.1" } | |
| shipper-webhook = { path = "crates/shipper-webhook", version = "0.3.0-rc.1" } | |
| shipper-registry = { path = "crates/shipper-registry", version = "0.3.0-rc.1" } | |
| shipper-sparse-index = { path = "crates/shipper-sparse-index", version = "0.3.0-rc.1" } | |
| shipper-cargo-failure = { path = "crates/shipper-cargo-failure", version = "0.3.0-rc.1" } | |
| shipper-output-sanitizer = { path = "crates/shipper-output-sanitizer", version = "0.3.0-rc.1" } | |
| shipper = { path = "crates/shipper", version = "0.3.0-rc.1" } | |
| shipper-cargo-failure = { path = "crates/shipper-cargo-failure", version = "0.3.0-rc.1" } | |
| shipper-cli = { path = "crates/shipper-cli", version = "0.3.0-rc.1" } | |
| shipper-config = { path = "crates/shipper-config", version = "0.3.0-rc.1" } | |
| shipper-duration = { path = "crates/shipper-duration", version = "0.3.0-rc.1" } | |
| shipper-encrypt = { path = "crates/shipper-encrypt", version = "0.3.0-rc.1" } | |
| shipper-output-sanitizer = { path = "crates/shipper-output-sanitizer", version = "0.3.0-rc.1" } | |
| shipper-registry = { path = "crates/shipper-registry", version = "0.3.0-rc.1" } | |
| shipper-retry = { path = "crates/shipper-retry", version = "0.3.0-rc.1" } | |
| shipper-sparse-index = { path = "crates/shipper-sparse-index", version = "0.3.0-rc.1" } | |
| shipper-types = { path = "crates/shipper-types", version = "0.3.0-rc.1" } | |
| shipper-webhook = { path = "crates/shipper-webhook", version = "0.3.0-rc.1" } |
| shipper-retry.workspace = true | ||
| shipper-encrypt.workspace = true | ||
| shipper-registry.workspace = true | ||
| shipper-webhook.workspace = true | ||
| shipper-types.workspace = true | ||
| shipper-config.workspace = true | ||
| shipper-duration.workspace = true | ||
| shipper-cargo-failure.workspace = true | ||
| shipper-sparse-index.workspace = true | ||
| shipper-output-sanitizer.workspace = true |
There was a problem hiding this comment.
The workspace dependencies in this file are not sorted alphabetically. Sorting them helps maintain consistency across the project and improves maintainability.
| shipper-retry.workspace = true | |
| shipper-encrypt.workspace = true | |
| shipper-registry.workspace = true | |
| shipper-webhook.workspace = true | |
| shipper-types.workspace = true | |
| shipper-config.workspace = true | |
| shipper-duration.workspace = true | |
| shipper-cargo-failure.workspace = true | |
| shipper-sparse-index.workspace = true | |
| shipper-output-sanitizer.workspace = true | |
| shipper-cargo-failure.workspace = true | |
| shipper-config.workspace = true | |
| shipper-duration.workspace = true | |
| shipper-encrypt.workspace = true | |
| shipper-output-sanitizer.workspace = true | |
| shipper-registry.workspace = true | |
| shipper-retry.workspace = true | |
| shipper-sparse-index.workspace = true | |
| shipper-types.workspace = true | |
| shipper-webhook.workspace = true |
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 13 minutes and 52 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (6)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Phase 7 of the Shipper decrating effort. Converts the workspace to publish-shaped form so every crate can actually be packaged and published.
Changes
Cargo.toml: Adds[workspace.dependencies]with all 12 intra-workspace crates declared aspath + version = "0.3.0-rc.1". Addsdefault-members = ["crates/shipper-cli", "crates/shipper"]so root-levelcargo build/cargo testtarget the two product crates. Also normalizes the stray indentation onshipper-output-sanitizer.Cargo.toml(shipper,shipper-cli,shipper-config,shipper-types,shipper-registry): all sibling deps now usedep.workspace = trueinstead of{ path = "../foo" }.Why
Cargo rule: published crates cannot have
path-only dependencies. Before this change,cargo package --no-verify -p shipper-typesfailed with:After this change,
cargo package --listsucceeds for every public crate.Validation
shipper,shipper-cli,shipper-config,shipper-types,shipper-registry).cargo check --workspace --all-targetsclean.cargo clippy --workspace --all-targets --all-features -- -D warningsclean.cargo fmt --all -- --checkclean.cargo package --list -p <crate>exits 0 for all 12 crates.Per
docs/decrating-plan.md§6 Phase 7.Test plan
cargo package --listsucceeds for every publishable cratecargo buildonly buildsshipper+shipper-cli(default-members)