clmerge

Crates.ioclmerge
lib.rsclmerge
version0.1.2
sourcesrc
created_at2019-02-12 16:18:54.160427
updated_at2019-02-12 18:08:59.695763
descriptionOpinionated, simple changelog merger
homepage
repositoryhttps://github.com/torkleyy/clmerge
max_upload_size
id114309
size25,950
ed25519-maintainers (github:dalek-cryptography:ed25519-maintainers)

documentation

README

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.

Commit count: 10

cargo fmt