a fancy pants keyboard i'm making
1# git-cliff ~ default configuration file
2# https://git-cliff.org/docs/configuration
3#
4# Lines starting with "#" are comments.
5# Configuration options are organized into tables and keys.
6# See documentation for more information on available options.
7
8[changelog]
9# template for the changelog body
10# https://keats.github.io/tera/docs/#introduction
11body = """
12# Changelog
13
14{% if version %}\
15 **Full Commit Log**: <REPO>/commits/{{ version }}\n
16 ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
17{% else %}\
18 ## [unreleased]
19{% endif %}\
20{% for group, commits in commits | group_by(attribute="group") %}
21 ### {{ group | striptags | trim | upper_first }}
22 {% for commit in commits %}
23 - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
24 {% if commit.breaking %}[**breaking**] {% endif %}\
25 {{ commit.message | upper_first }}\
26 {% endfor %}
27{% endfor %}\n
28"""
29
30# remove the leading and trailing s
31trim = true
32# postprocessors
33postprocessors = [
34 { pattern = '<REPO>', replace = "https://github.com/taciturnaxolotl/thyme" }, # replace repository URL
35]
36
37[git]
38# parse the commits based on https://www.conventionalcommits.org
39conventional_commits = true
40# filter out the commits that are not conventional
41filter_unconventional = true
42# process each line of a commit as an individual commit
43split_commits = false
44# regex for parsing and grouping commits
45commit_parsers = [
46 { message = "^feat", group = "<!-- 0 -->🚀 Features" },
47 { message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
48 { message = "^doc", group = "<!-- 3 -->📚 Documentation" },
49 { message = "^perf", group = "<!-- 4 -->⚡ Performance" },
50 { message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
51 { message = "^style", group = "<!-- 5 -->🎨 Styling" },
52 { message = "^test", group = "<!-- 6 -->🧪 Testing" },
53 { message = "^chore\\(release\\): prepare for", skip = true },
54 { message = "^chore\\(deps.*\\)", skip = true },
55 { message = "^chore\\(pr\\)", skip = true },
56 { message = "^chore\\(pull\\)", skip = true },
57 { message = "^chore|^ci", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" },
58 { body = ".*security", group = "<!-- 8 -->🛡️ Security" },
59 { message = "^revert", group = "<!-- 9 -->◀️ Revert" },
60]
61# protect breaking changes from being skipped due to matching a skipping commit_parser
62protect_breaking_commits = false
63# filter out the commits that are not matched by commit parsers
64filter_commits = false
65# regex for matching git tags
66# tag_pattern = "v[0-9].*"
67# regex for skipping tags
68# skip_tags = ""
69# regex for ignoring tags
70# ignore_tags = ""
71# sort the tags topologically
72topo_order = false
73# sort the commits inside sections by oldest/newest order
74sort_commits = "oldest"
75# limit the number of commits included in the changelog.
76# limit_commits = 42