#changelog #pull-request #opinionated

app clmerge

Opinionated, simple changelog merger

3 releases

0.1.2 Feb 12, 2019
0.1.1 Feb 12, 2019
0.1.0 Feb 12, 2019

#49 in #pull-request

MIT/Apache

14KB
258 lines

clmerge

Travis status Crates.io License

Opinionated, simple changelog merger

Never rebase your CHANGELOG.md again.

How it works

When submitting Pull Requests, only one file needs to be created in order to create a changelog entry.

The new changelog gets created using the clmerge command and will be stored as CHANGELOG.md.

File structure

(You can also look at the changelog directory to see how it works.)

changelog directory

clmerge expects a changelog directory in the current directory. Inside it, the following files shall be placed:

  • header.md (Optional): will be inserted at the top
  • old.md (Optional): will be appended at the end
  • config.ron (Optional): RON config file

Every other file will be ignored.

Version directories

Every directory inside changelog is expected to be a valid semver version (e.g. 0.5.1 or 1.0.0-alpha. Such a folder is called a "version directory".

Category directories

Inside every version directory, an arbitrary number of category directories can be placed (e.g. added, removed, changed, fixed).

In the final CHANGELOG.md, all categories will start with a capital letter.

Entry files

Inside the category directories, an arbitrary number of entries is expected.

The content of the files will be trimmed and concatenated, with \n after every entry.

Example

File tree:

├── changelog
│   ├── 0.1.0
│   │   └── added
│   │       └── general.md
│   ├── 0.2.0
│   │   ├── added
│   │   │   ├── feature-bar.md
│   │   │   └── feature-baz.md
│   │   └── changed
│   │       └── foo.md
│   ├── header.md
│   └── old.md
└── CHANGELOG.md

header.md:

# Changelog

old.md (your old CHANGELOG):

## 0.0.0

This is the old Changelog

* Did something

config.ron:

(
    // This will be used to insert links for `[#123]` entries
    // `[#123]` becomes `[#123](https://github.com/user/repo/issues/123)`
    pull_request_prefix: "https://github.com/user/repo/issues/",
)

feature-baz.md:

* Added feature baz ([#123])

Output (CHANGELOG.md):

<!-- This file is auto-generated. Do not edit. -->
# Changelog

## 0.2.0

### Changed

* Changed behavior of `Foo::foo`

### Added

* Added feature baz ([#123](https://github.com/user/repo/issues/123))
* Added feature bar

## 0.1.0

### Added

* General functionality for merging changelog entries

## 0.0.0

This is the old Changelog

* Did something

Installation

cargo install clmerge

License

This project is dual-licensed under MIT / Apache-2.0.

Dependencies

~3.5–5MB
~96K SLoC