Files
k3nny a14c3f1181
ci / vet, staticcheck, test, build (push) Successful in 3m2s
docs / Build and deploy docs (push) Failing after 13s
release / Build and publish release (push) Successful in 4m29s
feat(pyproject): release v1.7.0 — Python pyproject.toml version bump
Add internal/pyproject package with ReadVersion and WriteVersion for
pyproject.toml files. Reads [project].version (PEP 621) first, then
falls back to [tool.poetry].version. Section boundaries are detected
via TOML's rule that headers always start at the beginning of a line
(\n[ pattern), so inline arrays with [ characters don't interfere.

Config follows the established multi-value pattern:
- python.pyproject_toml: single path (opt-in, no default)
- python.pyproject_tomls: list for monorepos (overrides single)
- --pyproject flag overrides pyproject_toml and clears pyproject_tomls

100% per-package statement coverage maintained across all 14 packages;
FuzzReadVersion and FuzzWriteVersion added per fuzzing guidelines.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-12 00:22:49 +02:00

72 lines
2.6 KiB
Markdown

---
title: CLI Reference
weight: 20
---
## Common workflows
```bash
# Scaffold a default .releaser.yml
releaser --init
# Preview next version (no side effects)
releaser --dry-run
# Full release: bump versions, commit, tag, push, create release
releaser
# Commit and tag locally — skip push and release creation
releaser --no-push
# Push commit and tag but skip creating the release
releaser --no-release
# Update files but stop before committing
releaser --no-commit
# ... review changes, then commit manually and re-run:
releaser --tag-only
# Verbose mode: show config sources, commit analysis, version decision
releaser --verbose --dry-run
```
## Flags
| Flag | Default | Description |
|------|---------|-------------|
| `--dry-run` | false | Print next version and exit without making any changes |
| `--branch <name>` | auto-detected | Override branch name (useful in detached HEAD / CI) |
| `--branch-pattern <regex>` | `^(?:.*/)?release/(\d+)\.(\d+)$` | Override branch pattern (two capture groups: major, minor) |
| `--tag-prefix <prefix>` | `""` | Prefix for version tags (e.g. `v``v1.2.3`) |
| `--pom <path>` | `pom.xml` | Path to pom.xml relative to repo root |
| `--gradle <path>` | — | Override `gradle.build_file` from config |
| `--pyproject <path>` | — | Override `python.pyproject_toml` from config |
| `--changelog-file <path>` | `CHANGELOG.md` | Path to changelog file |
| `--release-env-file <path>` | `release.env` | Path for dotenv artifact; pass `""` to disable |
| `--no-commit` | false | Update version files but stop before committing |
| `--no-push` | false | Commit and tag locally, skip push and release |
| `--no-release` | false | Push branch and tag but skip release creation |
| `--tag-only` | false | Skip version file updates — tag HEAD and push |
| `--init` | false | Scaffold a default `.releaser.yml` and exit |
| `--verbose` | false | Print config table, commit analysis, and version decision |
## Exit codes
| Code | Meaning |
|------|---------|
| `0` | Success |
| `1` | Error (config, git, API, etc.) |
| `2` | No releasable commits found — nothing to do |
## Version bump rules
By default all releasable commits bump the **patch** component (minor is pinned to the branch). Override per commit type via `git.bump_rules` in `.releaser.yml`:
| Commit type | Default | Configurable via `bump_rules` |
|-------------|---------|-------------------------------|
| `fix:` | patch | `fix: "minor"` to bump minor |
| `feat:` | patch | `feat: "minor"` to bump minor |
| `feat!:` / `BREAKING CHANGE` | patch | `breaking: "minor"` to bump minor |
| `chore:`, `docs:`, etc. | none | — |
| unparseable message | none | non-strict: silently ignored |