This is a Cargo workspace containing multiple crates:
cargo-changeset/
├── crates/
│ ├── cargo-changeset/ # Main CLI executable
│ ├── changeset-core/ # Core types and traits
│ ├── changeset-parse/ # Changeset file parsing
│ ├── changeset-git/ # Git operations
│ └── changeset-version/ # Version bumping logic
- cargo-changeset: The main CLI tool for managing changesets
- changeset-core: Core types, error handling, and shared functionality
- changeset-parse: Parser for changeset files
- changeset-git: Git operations (detecting changes, etc.)
- changeset-version: Semantic version bumping logic
cargo buildcargo testcargo run --bin cargo-changeset -- <command>Workspace dependencies are managed in the root Cargo.toml under [workspace.dependencies]. When adding a new dependency:
- Add it to the workspace dependencies section
- Reference it in individual crate
Cargo.tomlfiles using{ workspace = true }
The project follows a modular architecture:
- Core types are defined in
changeset-coreand used across all crates - Parsing logic is isolated in
changeset-parse - Git operations are handled by
changeset-git - Version bumping logic lives in
changeset-version - The CLI in
cargo-changesetorchestrates these components