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
- Host: GitHub
- URL: https://github.com/wiiznokes/changen
- Owner: wiiznokes
- License: gpl-3.0
- Created: 2024-07-31T22:28:01.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-10-01T23:21:42.000Z (about 1 year ago)
- Last Synced: 2025-03-07T17:15:37.806Z (7 months ago)
- Topics: changelog, gen, release-notes
- Language: Rust
- Homepage:
- Size: 169 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
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 milestoneBy 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)