Repository navigation
workspace: crates/ layout with shared workspace package and deps - #14
Merged
Merged
Conversation
added 2 commits
November 6, 2026 23:48
Both crates move under crates/ (crates/ccwire, crates/ccwire-oauth) with a virtual root Cargo.toml: [workspace.package] (edition, license, repository, authors, rust-version), [workspace.dependencies] and [workspace.lints]. Crate names, versions, metadata and exclude lists are unchanged, as is Cargo.lock. Each crate's LICENSE (and ccwire's README) is a symlink to the root's, which cargo package includes as a file. flake.nix, ci.yml (MSRV now read from [workspace.package]), newest-cli.yml, release-plz.toml changelog paths and the README link follow the move.
With a virtual root, cargo deny checks every member, ccwire-oauth's reqwest tree included (before, only the root package ccwire was checked).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves both crates under
crates/, modeled on ffcine's layout:Cargo.toml:[workspace]withmembers = ["crates/*"]andresolver = "3";[workspace.package]holds edition, license, repository, authors and rust-version;[workspace.dependencies]lists every dependency;[workspace.lints.clippy]is the two crates' shared lint set.struct_excessive_bools = "allow", which only ccwire had, now applies to ccwire-oauth too, so its lints only get looser.missing_docsstays as#![warn(missing_docs)]in ccwire-oauth'slib.rs.crates/ccwire,crates/ccwire-oauth: names, versions (0.1.1 / 0.1.0), description, docs, keywords and exclude lists are unchanged, and so is the public API. Shared fields usex.workspace = true, deps usedep.workspace = true(each crate adds its own tokio features), and lints use[lints] workspace = true.LICENSE, and ccwire'sREADME.md, is a symlink to the root's, so there is one copy.cargo packageincludes them as regular files.Cargo.lockstays at the root, byte-for-byte unchanged.flake.nixreadscrates/ccwire/Cargo.toml.ci.yml's MSRV job reads[workspace.package]rust-version and checks every crate inherits it.newest-cli.ymlandcheck_cli_flags.pyuse the new source paths.release-plz.tomlchangelog paths are nowcrates/*/CHANGELOG.md, with the tags unchanged. The root README links tocrates/ccwire-oauth.clippy.tomlanddeny.tomlstay at the root, and clippy still findsclippy.tomlfrom the parent dirs.webpki-root-certs(Mozilla's root certs, via reqwest → rustls-platform-verifier). Before,cargo denyonly checked the root packageccwire. With a virtual root it checks every member, which brings in ccwire-oauth's reqwest tree.Local gate (
nix develop), all passing:cargo fmt --all --checkcargo clippy --workspace --all-targets --locked [--all-features] -- -D warnings, plus per-crate--libcargo test --workspace --locked: 113 tests; with--all-features: 143, the same as mainRUSTDOCFLAGS=-Dwarnings cargo doc --workspace --no-deps --all-featurescargo deny checkcargo package -p ccwireandcargo package -p ccwire-oauth: both build, and the file lists match main's exactly (README and LICENSE included;tests/corpusandtests/corpus.rsexcluded)nix flake check