From f35c10ec496b3d8bc49bce264d59833465c6883b Mon Sep 17 00:00:00 2001
From: Awiteb
Date: Thu, 1 May 2025 10:07:18 +0000
Subject: [PATCH] chore: Add `git-cliff` configuration file
Signed-off-by: Awiteb
---
cliff.toml | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+)
create mode 100644 cliff.toml
diff --git a/cliff.toml b/cliff.toml
new file mode 100644
index 0000000..84463b8
--- /dev/null
+++ b/cliff.toml
@@ -0,0 +1,72 @@
+# git-cliff ~ configuration file
+# https://git-cliff.org/docs/configuration
+
+[changelog]
+# A Tera template to be rendered as the changelog's header.
+# See https://keats.github.io/tera/docs/#introduction
+header = """
+# Changelog\n
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n
+"""
+# A Tera template to be rendered for each release in the changelog.
+# See https://keats.github.io/tera/docs/#introduction
+body = """
+{% if version -%}
+ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
+{% else -%}
+ ## [Unreleased]
+{% endif -%}
+{% for group, commits in commits | group_by(attribute="group") %}
+ ### {{ group | upper_first }}
+ {% for commit in commits %}
+ - {{ commit.message | split(pat="\n") | first | upper_first | trim }}\
+ {% endfor %}
+{% endfor %}\n
+"""
+# A Tera template to be rendered as the changelog's footer.
+# See https://keats.github.io/tera/docs/#introduction
+footer = """
+{% for release in releases -%}
+ {% if release.version -%}
+ {% if release.previous.version -%}
+ [{{ release.version | trim_start_matches(pat="v") }}]: \
+ https://git.4rs.nl/awiteb/n34/compare/{{ release.previous.version }}..{{ release.version }}
+ {% endif -%}
+ {% else -%}
+ [unreleased]: https://git.4rs.nl/awiteb/n34/compare/{{ release.previous.version }}..HEAD
+ {% endif -%}
+{% endfor %}
+
+"""
+# Remove leading and trailing whitespaces from the changelog's body.
+trim = true
+
+[git]
+# Parse commits according to the conventional commits specification.
+# See https://www.conventionalcommits.org
+conventional_commits = false
+# Exclude commits that do not match the conventional commits specification.
+filter_unconventional = false
+# An array of regex based parsers for extracting data from the commit message.
+# Assigns commits to groups.
+# Optionally sets the commit's scope and can decide to exclude commits from further processing.
+commit_parsers = [
+ { message = "^.*!:.*$", group = "Breaking Change" },
+ { message = "^feat", group = "Added" },
+ { message = "^deprecate", group = "Deprecated" },
+ { message = "^remove", group = "Removed" },
+ { message = "^deps", group = "Dependencies" },
+ { message = "^refactor", group = "Refactor" },
+ { message = "^fix", group = "Fixed" },
+ { message = "^docs", group = "Documentation" },
+]
+# Prevent commits that are breaking from being excluded by commit parsers.
+filter_commits = false
+# Order releases topologically instead of chronologically.
+topo_order = false
+# Order of commits in each group/release within the changelog.
+# Allowed values: newest, oldest
+sort_commits = "oldest"