dart_bump 1.0.3
dart_bump: ^1.0.3 copied to clipboard
Automates Dart project version bumps using Git diffs and AI-generated CHANGELOG entries.
dart_bump #
dart_bump is a Dart automation tool for safe, consistent patch version bumps in Dart projects.
It integrates with Git and OpenAI to:
- Extract the current Git diff
- Generate a structured
CHANGELOG.mdentry - Increment the patch version in
pubspec.yaml - Update API version constants
- Keep releases consistent and low-effort
Designed for automation, CI usage, and developer tooling.
Features #
- ๐ข Automatic patch version bump (
x.y.z โ x.y.(z+1)) - ๐งฉ Git diff extraction
- ๐ AI-generated, structured CHANGELOG entries
- ๐ง API version synchronization
- โป๏ธ Fully overridable logging
- ๐๏ธ Support for extra files with custom version regex patterns
Usage #
Programmatic #
import 'dart:io';
import 'package:dart_bump/dart_bump.dart';
void main() async {
final bump = DartBump(
Directory.current,
changeLogGenerator: OpenAIChangeLogGenerator(
apiKey: Platform.environment['OPENAI_API_KEY'],
),
);
final result = await bump.bump();
if (result == null) {
print('โน๏ธ Nothing to bump โ version is already up to date.');
return;
}
print('๐ฏ New version: ${result.version}');
final changelog = result.changeLogEntry;
if (changelog != null && changelog.isNotEmpty) {
print('๐ Generated CHANGELOG entry:');
print('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
print(changelog);
print('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
}
}
CLI #
Activate the dart_bump command:
dart pub global activate dart_bump
Run dart_bump to automatically bump the patch version, update CHANGELOG.md, and synchronize API constants:
dart_bump [<project-dir>] [--api-key <key>] [--extra-file <file=regexp>]
Options:
<project-dir>: Path to the Dart project ๐ (default: current directory)--api-key <key>: OpenAI API key ๐ (optional; defaults toOPENAI_API_KEYenvironment variable)--extra-file <file=regexp>: Specify extra files to update with a Dart RegExp ๐๏ธ (multiple allowed)--diff-tag <tag>: Generate diff from the given Git tag to HEAD ๐ท (accepts taglast)--diff-context <n>: Number of context lines for git diff ๐ (default: 10)-n, --dry-run: Preview changes only โ no files will be modified ๐งช (default: false)-h, --help: Show help message โ
Example usage:
# Bump the current project using the OpenAI API key from environment
dart_bump
# Bump a project in another directory
dart_bump /path/to/project
# Bump with an explicit OpenAI API key
dart_bump --api-key YOUR_API_KEY
# Bump a project in another directory, update an extra file,
# and provide an API key to generate a CHANGELOG entry:
dart_bump /path/to/backend-dir \
--extra-file "lib/src/api.dart=version\\s*=\\s*'([^']+)'\\s*;" \
--api-key sk-xyzkey
- The dart_bump CLI can be customized with one or more
--extra-fileentries, allowing different projects to update additional files with the new version automatically.
How It Works #
- Verifies the project is a Git repository โ๏ธ
- Runs
git diffto extract changes ๐งฉ - Sends the patch to ChatGPT to generate a CHANGELOG entry ๐ง
- Increments the patch version in
pubspec.yaml๐ข - Prepends the entry to
CHANGELOG.md๐ - Updates extra files (if present) ๐
All steps fail fast and log clearly.
Requirements #
- Git installed and available in PATH
- Dart 3.x+
- OpenAI API key (optional but recommended)
If no API key is provided, version bumping still works, but the CHANGELOG entry will be a placeholder.
Logging #
All output goes through:
void log(String message)
Override it to:
- Integrate with your logger
- Silence output
- Redirect logs to CI systems
Issues & Feature Requests #
Please report issues and request features via the issue tracker.
Author #
Graciliano M. Passos: gmpassos@GitHub.
License #
Dart free & open-source license.