https://github.com/f3ath/cider
Tools for Dart package maintainers
https://github.com/f3ath/cider
changelog dart hacktoberfest
Last synced: 4 months ago
JSON representation
Tools for Dart package maintainers
- Host: GitHub
- URL: https://github.com/f3ath/cider
- Owner: f3ath
- License: mit
- Created: 2020-07-12T20:43:21.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-12-24T18:44:43.000Z (over 1 year ago)
- Last Synced: 2025-03-28T15:08:07.945Z (about 1 year ago)
- Topics: changelog, dart, hacktoberfest
- Language: Dart
- Homepage: https://pub.dev/packages/cider
- Size: 162 KB
- Stars: 108
- Watchers: 3
- Forks: 16
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
![logo]
# Cider (CI for Dart: Efficient Release)
Cider is a CLI tool for Dart package maintenance. It updates `CHANGELOG.md` and `pubspec.yaml` to help automate releases.
## Assumptions
Cider expects:
- a `CHANGELOG.md` file in the project root
- changelog format compatible with [Keep a Changelog][Changelog]
- simple Markdown in changelog entries (no HTML or complex formatting)
- project versions that follow [Semantic Versioning 2.0.0][semver]
## Installation
```bash
dart pub global activate cider
```
## Configuration
Configure Cider in `pubspec.yaml` under `cider`:
```yaml
cider:
link_template:
tag: https://github.com/example/project/releases/tag/%tag%
diff: https://github.com/example/project/compare/%from%...%to%
version: v%version% # default: %version%
```
Placeholders:
- `%from%` - previous version tag
- `%to%` - current version tag
- `%tag%` - release tag
## Project root detection
You can run Cider from any subdirectory. It searches upward for `pubspec.yaml`.
To override auto-detection:
```bash
cider --project-root=/path/to/project version
```
## Changelog commands
These commands modify `CHANGELOG.md` unless stated otherwise.
### Add an entry
```bash
cider log
```
- ``: `added`, `changed`, `deprecated`, `removed`, `fixed`, `security`
- ``: one Markdown line
Examples:
```bash
cider log changed 'Improve parser performance'
cider log added 'Support workspace mode'
cider log fixed 'Null pointer in changelog parser'
```
### Release `Unreleased` entries
```bash
cider release [options]
```
Options:
- `--date` - release date (default: today)
If `link_template.diff` is configured, Cider generates changelog diff links automatically.
### Print changes for a version (read-only)
```bash
cider describe [] [options]
```
- `` defaults to `Unreleased` if omitted
Options:
- `--only-body` - omit section header and link footer
### List versions
```bash
cider list [options]
```
Options:
- `--include-yanked`, `-y`
- `--include-unreleased`, `-u`
## Version commands
These commands operate on `version` in `pubspec.yaml`.
### Print current version (read-only)
```bash
cider version
```
### Set version
```bash
cider version
```
`` must be [SemVer][semver]-compatible.
Examples:
| Before | Command | After |
|----------|-----------------------------------|----------------|
| 1.2.3+1 | `cider version 3.2.1` | 3.2.1 |
| 0.2.1-dev| `cider version 0.0.1-alpha+42` | 0.0.1-alpha+42 |
### Yank / unyank a release in changelog
```bash
cider yank
cider unyank
```
Yanked versions are marked as `[YANKED]` in `CHANGELOG.md`.
### Bump version
```bash
cider bump [options]
```
`` can be:
- `breaking` (`y` for `0.y.z`, otherwise `x` for `x.y.z`)
- `major`
- `minor`
- `patch`
- `build`
- `pre` (pre-release)
- `release` (remove pre-release suffix)
Options:
- `--keep-build` - keep existing build metadata
- `--bump-build` - increment build metadata
- `--build=` - set build metadata explicitly
- `--pre=` - set pre-release prefix
Notes:
- For `pre` and `build`, Cider increments the rightmost dot-separated numeric identifier.
- If no numeric identifier exists, Cider appends `.1`.
- Per SemVer, build metadata does not affect version precedence.
Examples:
| Before | Command | After |
|------------------|---------------------------------------------|------------------|
| 1.2.1-alpha+42 | `cider bump breaking` | 2.0.0 |
| 0.2.1-alpha+42 | `cider bump breaking` | 0.3.0 |
| 0.2.1-alpha+42 | `cider bump major` | 1.0.0 |
| 0.2.1-alpha+42 | `cider bump minor` | 0.3.0 |
| 0.2.1-alpha+42 | `cider bump patch` | 0.2.1 |
| 0.2.1 | `cider bump patch` | 0.2.2 |
| 0.2.1-alpha+42 | `cider bump pre` | 0.2.1-alpha.1 |
| 1.2.1-alpha+42 | `cider bump breaking --keep-build` | 2.0.0+42 |
| 0.2.1-alpha+42 | `cider bump breaking --bump-build` | 0.3.0+43 |
| 0.2.1-alpha+42 | `cider bump major --build=2020-02-02` | 1.0.0+2020-02-02 |
| 0.2.1-alpha+42 | `cider bump minor --pre=alpha --bump-build` | 0.3.0-alpha+43 |
| 0.2.1-alpha+42 | `cider bump release` | 0.2.1 |
| 0.2.1-alpha+42 | `cider bump release --keep-build` | 0.2.1+42 |
## Exit codes
| Code | Meaning |
|------|---------|
| 0 | Success |
| 64 | Usage error (invalid arguments) |
| 65 | Data error (missing/invalid project files) |
| 70 | Internal software error (consider opening an issue) |
[logo]: https://raw.githubusercontent.com/f3ath/cider/master/cider.png
[semver]: https://semver.org
[Changelog]: https://keepachangelog.com/en/1.1.0/