Chachacha changes changelogs. This is a tool you can use to keep your changelog tidy, following the Keep a Changelog specification which is the most implemented plugin at the moment.
pip install chachacha
Init a new changelog and then add some changes:
chachacha init
chachacha added Glad to meet you
cat CHANGELOG.md
Subcommands are modeled from Keep a Changelog specification:
chachacha --help
Usage: chachacha [OPTIONS] COMMAND [ARGS]...
Options:
--filename TEXT changelog filename
--driver TEXT changelog format driver
--help Show this message and exit.
Commands:
init initialize a new file
config configure changelog options
release release a version
added add an "added" entry
changed add a "changed" entry
deprecated add a "deprecated" entry
fixed add a "fixed" entry
removed add a "removed" entry
security add a "security" entry
So you can add, change, deprecate, fix, remove and security announce your changes.
KAC format plugin driver heavily depends on Colin Bounouar's keepachangelog library.
Releasing a version is simple as:
chachacha release --help
Usage: main.py release [OPTIONS] [SPEC]
Update the changelog to release version SPEC.
SPEC should either be the version number to release or the strings
"major", "minor" or "patch".
Options:
--help Show this message and exit.
Specification follows Semantic Versioning thanks to python semver library.
Starting from 0.1.3, Chachacha supports a small configuration system directly embedded in the file via a hack on Markdown link syntax. This allow for a number of features like generating compare history:
chachacha init
chachacha config git_provider GH
chachacha config repo_name aogier/chachacha
chachacha config tag_template 'v{t}'
chachacha added one feature
chachacha added another feature
chachacha release
chachacha security hole
chachacha added capability
cat CHANGELOG.md
[...]
- another feature
[Unreleased]: https://github.com/aogier/chachacha/compare/v0.0.1...HEAD
[0.0.1]: https://github.com/aogier/chachacha/releases/tag/v0.0.1
[//]: # (C3-1-DKAC-GGH-Raogier/chachacha-Tv{t})
Configuration system keys are:
git_provider
: a git repo provider driver (supported:GH
for github.com)repo_name
: repo name + namespace your repo istag_template
: a tag template which maps release versions with tag names. Variablet
will be expanded with the version number.
chachacha init
# quoting is supported
chachacha added "this is a new feature I'm excited about"
chachacha added this is also good
chachacha deprecated this is no longer valid
File is now:
cat CHANGELOG.md
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- this is a new feature I'm excited about
- this is also good
### Deprecated
- this is no longer valid
[//]: # (C3-1-DKAC)
Now release it:
chachacha release
chachacha added new version added item
File is now:
cat CHANGELOG.md
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- new version added item
## [0.0.1] - 2020-02-26
### Added
- this is a new feature I'm excited about
- this is also good
### Deprecated
- this is no longer valid
[//]: # (C3-1-DKAC)