changelog is a command-line application to read and manipulate CHANGELOG.md files that follows the keepachangelog.com spec.
It can normalize the file (fmt), create a release (release) and show a specific version (show). See Usage for details.
# Initialize a new CHANGELOG.md file $ changelog init --compare-url=https://github.com/myorg/myrepo/compare/abcdef...1234 # Add a first message under "Added" section $ changelog added "Initial commit" # Create release $ changelog release 0.1.0The easiest way to install it is to download the latest version from GitHub releases.
There are precompiled binaries for macOS and Linux.
Clone the repository and build the executable:
make buildThis will generate a changelog binary that can be copied to /usr/local/bin:
cp changelog /usr/local/binchangelog manipulate and validate markdown changelog files following the keepachangelog.com specification. Usage: changelog [command] Available Commands: added Add item under 'Added' section bundle Bundles files containing unrelased changelog entries changed Add item under 'Changed' section deprecated Add item under 'Deprecated' section fixed Add item under 'Fixed' section fmt Reformat the change log file help Help about any command init Initializes a new changelog release Change Unreleased to [version] removed Add item under 'Removed' section security Add item under 'Security' section show Show changelog for [version] Flags: -f, --filename string Changelog file or '-' for stdin (default "CHANGELOG.md") -h, --help help for changelog -o, --output string Output file or '-' for stdout (default "-") Use "changelog [command] --help" for more information about a command. Outputs a changelog with only preamble and Unreleased version to standard output. You can specify a filename using --output/-o flag:
$ touch CHANGELOG.md $ changelog init -o CHANGELOG.md --compare-url https://github.com/rcmachado/changelog/compare/abcdef...HEAD Changelog file 'CHANGELOG.md' created.Normalize file format (see Formatting for the specific transformation applied):
changelog fmtShow what will be in the next release:
changelog show UnreleasedShow the change log for a specific version:
changelog show 1.2.3Create a new release:
changelog release 1.2.4fmt command normalizes the changelog file. The idea is to always have the same output, no matter how messy the file is. Right now it doesn't do much, but the plan is to evolve it as a kind of go fmt for changelogs.
Currently, the following transformations are applied:
- Sections are sorted (eg. Added, Changed, etc)
- Version links are put at the bottom of the file
- List bullet is always
-
Feel free to fork and submit a PR. You can also take a look, at the Issues tab to see some ideas.
Licensed under MIT. See LICENSE file for details.