summaryrefslogtreecommitdiff
path: root/cliff.toml
diff options
context:
space:
mode:
authorChristian Heusel <christian@heusel.eu>2023-07-22 10:40:34 +0200
committerLevente Polyak <anthraxx@archlinux.org>2023-09-26 21:13:08 +0200
commit7e41adf00bb93cf6e016b9a7cd8ebdc693666077 (patch)
treec74dde843b40c7fced14a59a1812ca0e544b7e3e /cliff.toml
parenta316b50f88c9269c5fe54ab6854a7f591c0378dd (diff)
downloaddevtools-7e41adf00bb93cf6e016b9a7cd8ebdc693666077.tar.xz
chore: add a config file for git cliff
This is done so that the generated changelog carries more information (i.e. the scope of the change). Co-Authored-by: Levente Polyak <anthraxx@archlinux.org> Signed-off-by: Christian Heusel <christian@heusel.eu> Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
Diffstat (limited to 'cliff.toml')
-rw-r--r--cliff.toml44
1 files changed, 44 insertions, 0 deletions
diff --git a/cliff.toml b/cliff.toml
new file mode 100644
index 0000000..597d778
--- /dev/null
+++ b/cliff.toml
@@ -0,0 +1,44 @@
+[changelog]
+header = "# Changelog\n\n"
+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 | sort(attribute="message") %}
+ - {% set component = commit.footers | filter(attribute="token", value="Component") | map(attribute="value") | join %}
+ {%- if component %}{{ component }}: {% elif commit.scope %}{{ commit.scope }}: {% endif %}
+ {{- commit.message | upper_first }}
+ {%- set fixes = commit.footers | filter(attribute="token", value="Fixes") %}
+ {%- for fix in fixes %}{{ fix.separator }}{{ fix.value }}{% endfor %}
+ {%- endfor %}
+{% endfor %}
+
+"""
+footer = ""
+
+# remove the leading and trailing whitespaces from the template
+trim = true
+
+[git]
+# allow only conventional commits
+# https://www.conventionalcommits.org
+conventional_commits = true
+# regex for parsing and grouping commits
+commit_parsers = [
+ { message = "^chore\\(release\\): version", skip = true},
+ { message = "^feat", group = "Features"},
+ { message = "^fix", group = "Bug Fixes"},
+ { message = "^doc", group = "Documentation"},
+ { message = "^perf", group = "Performance"},
+ { message = "^test", group = "Testing"},
+ { message = "^chore", group = "Miscellaneous Tasks"},
+ { body = ".*security", group = "Security"},
+]
+# filter out the commits that are not matched by commit parsers
+filter_commits = false
+# glob pattern for matching git tags
+tag_pattern = "*v[0-9]*"