This directory contains the planning logic for the Rust crates.io release workflow.
After the repository split, Rust crates are no longer represented by a short hand-maintained list. The release workflow needs to:
core/ and integrations/publish = falseKeeping this logic in a standalone script makes it testable and keeps the workflow YAML readable.
The planner scans:
core/Cargo.tomlcore/core/Cargo.tomlcore/layers/*/Cargo.tomlcore/services/*/Cargo.tomlintegrations/*/Cargo.tomlIt reads local dependencies, build-dependencies, and target-specific variants of those tables to build a dependency graph, then emits a deterministic topological order.
Print the publish order as JSON:
python3 .github/scripts/release_rust/plan.py
Write the same JSON to GitHub Actions output as packages=<json>:
python3 .github/scripts/release_rust/plan.py --github-output
Run the unit tests with:
python3 .github/scripts/release_rust/test_plan.py