Skip to content

Repository files navigation

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
  • simple Markdown in changelog entries (no HTML or complex formatting)
  • project versions that follow Semantic Versioning 2.0.0

Installation

dart pub global activate cider

Configuration

Configure Cider in pubspec.yaml under cider:

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:

cider --project-root=/path/to/project version

Changelog commands

These commands modify CHANGELOG.md unless stated otherwise.

Add an entry

cider log <type><description>
  • <type>: added, changed, deprecated, removed, fixed, security
  • <description>: one Markdown line

Examples:

cider log changed 'Improve parser performance'
cider log added 'Support workspace mode'
cider log fixed 'Null pointer in changelog parser'

Release Unreleased entries

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)

cider describe [<version>] [options]
  • <version> defaults to Unreleased if omitted

Options:

  • --only-body - omit section header and link footer

List versions

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)

cider version

Set version

cider version <new_version>

<new_version> must be SemVer-compatible.

Examples:

BeforeCommandAfter
1.2.3+1cider version 3.2.13.2.1
0.2.1-devcider version 0.0.1-alpha+420.0.1-alpha+42

Yank / unyank a release in changelog

cider yank <version>
cider unyank <version>

Yanked versions are marked as [YANKED] in CHANGELOG.md.

Bump version

cider bump <part> [options]

<part> 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=<value> - set build metadata explicitly
  • --pre=<prefix> - 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:

BeforeCommandAfter
1.2.1-alpha+42cider bump breaking2.0.0
0.2.1-alpha+42cider bump breaking0.3.0
0.2.1-alpha+42cider bump major1.0.0
0.2.1-alpha+42cider bump minor0.3.0
0.2.1-alpha+42cider bump patch0.2.1
0.2.1cider bump patch0.2.2
0.2.1-alpha+42cider bump pre0.2.1-alpha.1
1.2.1-alpha+42cider bump breaking --keep-build2.0.0+42
0.2.1-alpha+42cider bump breaking --bump-build0.3.0+43
0.2.1-alpha+42cider bump major --build=2020-02-021.0.0+2020-02-02
0.2.1-alpha+42cider bump minor --pre=alpha --bump-build0.3.0-alpha+43
0.2.1-alpha+42cider bump release0.2.1
0.2.1-alpha+42cider bump release --keep-build0.2.1+42

Exit codes

CodeMeaning
0Success
64Usage error (invalid arguments)
65Data error (missing/invalid project files)
70Internal software error (consider opening an issue)

About

Tools for Dart package maintainers

Topics

Resources

Stars

112 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages