An open API service indexing awesome lists of open source software.

https://github.com/wiiznokes/changen

Feature-rich changelog generator
https://github.com/wiiznokes/changen

changelog gen release-notes

Last synced: 7 months ago
JSON representation

Feature-rich changelog generator

Awesome Lists containing this project

README

          

# Changelog generator

## Features

- feature-rich changelog format
- low-config changelog management
- customizable

## See in action

This project use `changen` to maintain its changelog, using github action

- [The changelog file](./CHANGELOG.md) - see what the syntax have to offer
- [Its commits history](https://github.com/wiiznokes/changen/commits/master/CHANGELOG.md)
- [The release Github workflow](./.github/workflows/create_release_notes_pr.yml) - It will create a PR

## Getting started

1. **Create the changelog**

If you don't have a changelog file yet, you can use `changen new`.

2. **Validate your changelog syntax**

If you already have a changelog file, you can see if its syntax get accepted by running `changen validate`.

3. **Generate release notes**

When you know your changelog is valid, you can use `changen generate` to generate a release-note about the last commit.

It can generate release notes

- between two tags/commits
- for a specific commit/tag
- for a milestone

By default, it will generate release notes from the last release in the changelog to HEAD. It will get the list of commits using a `git log` command, and try to match them against remote PRs if it have the necessary infos.

4. **Make a new release**

To make a new release, use `changen release --version 1.0.0`.

**The full API reference can be found [here](./res/API_REFERENCE.md)** (automatically generated).

## Commit syntax

```
fix(project_a): Fix a nasty bug <=> commit-type(scope): commit-message
```

## Advanced use

#### Ignore commit

Currently, you can write theses patterns anywhere in the commit message:

- `(skip changelog)`
- `(ignore changelog)`
- `!changelog`
- `!log`

#### Map commit type to section(ex: `### Fixed`) in the changelog

The default map can be seen [here](./res/map_commit_type_to_section.json). Note than the order will define in witch order the section will appears in the log file.
Use with `changen generate --map path/to/map.json`

#### Changelog custom path

`changen generate --file path/to/CHANGELOG.md`

## Acknowledgement

- [pom](https://github.com/J-F-Liu/pom) for being an awesome parser. Without this parser, i would have probably drop this project! The [parser](./changelog_document/src/de.rs) of the changelog is less than 200 lines!

- Iced, for its well maintained [changelog](https://github.com/iced-rs/iced/blob/master/CHANGELOG.md)

- [Gitoxide changelog](https://github.com/Byron/gitoxide/blob/main/CHANGELOG.md) because its use a [similar tool](https://github.com/Byron/cargo-smart-release) (quit complex and more powerful)
- [clap](https://github.com/clap-rs/clap)