Heylogs is a tool designed to automate the validation and the release of changes in a human-readable format.
Key points:
- Follow the Keep a Changelog format.
- Available as a library, a command-line tool, a Maven plugin and Maven Enforcer rules.
- Java 8 minimum requirement
Features:
- Checks the format against an extensive set of rules.
- Summarizes content to provide a quick overview of a repository.
- Filters and extracts versions for publication or searching.
- Modifies content by releasing unreleased changes or adding changes.
- Manages GitHub, GitLab and Forgejo peculiarities.
- Validates semantic, calendar and regex versioning schemes.
- Handles the prefix tagging strategy.
- Seamlessly integrates into CI/CD pipelines.
- Supports hierarchical configuration through
heylogs.propertiesfiles.
[ Usage | Features | Cookbook | Developing | Contributing | Licensing | Related work]
Heylogs is available in multiple formats to fit your workflow:
- Library - Java API for programmatic access
- Command-line tool - Command-line tool for any platform
- Maven plugin - Maven build integration
- Maven Enforcer rules - Enforce changelog quality in builds
- CI/CD pipelines - Integrate into CI/CD environments
Heylogs provides several commands to interact with changelog files:
- check - Validate changelog format against an extensive set of rules
- scan - Summarize changelog content and metadata
- extract - Filter and extract specific versions
- release - Convert unreleased changes into a new release
- push - Insert a change entry to the Unreleased section
- list - Display all available resources and rules
Heylogs also provides some customizations to adapt to various workflows:
- forge - Support for GitHub, GitLab, and Forgejo specific features
- versioning - Validate version numbers using semver, calver, or custom regex patterns
- tagging - Configure version tag prefixes (e.g., v1.0.0)
- rules - Extensive set of rules to enforce changelog quality and consistency
Heylogs also has some quality-of-life features to make it easier to use and integrate into different workflows:
- config file - Hierarchical configuration through
heylogs.propertiesfiles, similar to Lombok's configuration system
- badges - Generate badges for unreleased changes
- gitflow - Automate the changelog release
- tips - Tips and best practices for using Heylogs effectively
This project is written in Java and uses Apache Maven as a build tool.
It requires Java 8 as minimum version and all its dependencies are hosted
on Maven Central.
The code can be build using any IDE or by just type-in the following commands in a terminal:
git clone https://github.com/nbbrd/heylogs.git
cd heylogs
mvn clean installAny contribution is welcome and should be done through pull requests and/or issues.
The code of this project is licensed under the European Union Public Licence (EUPL).
This project is not the only one that deals with keep-a-changelog format.
Here is a non-exhaustive list of related work:
- clparse
- GIT Changelog Merge Driver - does a semantic merge of two changelogs.