Preparing Releases
The prepare step is where changesets become a release. Cursus reads all pending changeset files, determines the next version for each package, and updates everything in one operation.
Running prepare
Section titled “Running prepare”cursus prepareOr for specific packages only:
cursus prepare -p my-package -p my-other-packageWhat happens during prepare
Section titled “What happens during prepare”- Aggregate changesets — all changeset files in
.cursus/are read and grouped by package - Determine versions — for each package, the highest change type (major > minor > patch) determines the version bump
- Propagate dependencies — packages that depend on a bumped package will also be bumped (see configuration)
- Update version files —
Cargo.toml,package.json, lock files, and any workspace references are updated - Generate changelogs —
CHANGELOG.mdentries are created from changeset descriptions - Clean up — consumed changeset files are deleted
- Git operations — depending on your git strategy, changes are committed and optionally pushed or placed on a release branch
Linked versions
Section titled “Linked versions”For monorepos where packages should share a version number, configure linked versions. When any package in a linked group is bumped, all packages in the group receive the same version.
Dependency propagation
Section titled “Dependency propagation”When a package is bumped, its dependents may need a bump too. The dependency_bump setting controls this behaviour:
| Value | Behaviour |
|---|---|
auto (default) | Propagates major upstream bumps as major; all others as patch |
patch / minor / major | Always bump dependents by this fixed level |
match | Bump dependents by the same level as the dependency |
Git strategies
Section titled “Git strategies”The [git] configuration controls how prepare interacts with Git:
push(default) — commits and pushes directly to the current branchbranch— creates a release branch (e.g.,cursus-release/my-package) with a pull request if GitHub integration is enabled
Dry run
Section titled “Dry run”Preview what prepare would do without making any changes:
cursus prepare --dry-run