feat(cli): support workspaces in `deno bump-version` (#33689)
This extends `deno bump-version` from a single-package helper into a
workspace-aware release utility, with behavior intended to cover the
workflow currently handled by `jsr:@deno/bump-workspaces` in repos like
`denoland/std`.
At a workspace root, `deno bump-version
<patch|minor|major|premajor|preminor|prepatch|prerelease>` now applies
the same increment to every workspace member with a `version`. It also
rewrites matching `jsr:` constraints in the root config and import map
target so cross-package references stay in sync.
When no increment is passed in workspace mode, `deno bump-version`
derives per-package bumps from conventional commits between a start ref
and a base ref. It supports scoped commits, wildcard `*` scopes,
`BREAKING` / `!` major bumps, unstable-scope patch clamping, 0.x.y
semver downgrades, prerelease increments, and generated `Releases.md`
entries.
The implementation also detects manual version edits made since the
start ref and treats them as authoritative, matching
`@deno/bump-workspaces`. Historical `deno.json` reads use JSONC parsing,
and git refspec paths are normalized so manual-version detection works
on Windows.
New flags:
- `--workspace` / `--no-workspace`
- `--dry-run`
- `--start <ref>`
- `--base <ref>`
- `--import-map <path>`
- `--release-notes <path>`
Single-package behavior remains unchanged. Workspace mode auto-engages
at the workspace root when there is more than one member with a version.
Branch creation, commits, and PR creation remain out of scope for the
command and should stay in the calling workflow.
---------
Co-authored-by: Bartek IwaĆczuk <biwanczuk@gmail.com>