# configuration file for git-cliff (0.1.0)

[changelog]
# changelog header
header = """
# `miette` Release Changelog

"""

# template for the changelog body
# https://tera.netlify.app/docs/#introduction
body = """
{% if version %}\
<a name="{{ version }}"></a>
## {{ version | replace(from="v", to="") }} ({{ timestamp | date(format="%Y-%m-%d") }})
{% else %}\
## Unreleased
{% endif %}\
{% for group, commits in commits | filter(attribute="scope") | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}
{% if commit.scope %}\
* **{{ commit.scope }}:** {{ commit.message }} ([{{ commit.id | truncate(length=8, end="") }}](https://github.com/zkat/miette/commit/{{ commit.id }}))
{%- if commit.breaking %}
    * **BREAKING CHANGE**: {{ commit.breaking_description }}
{%- endif %}\
{% endif %}\
{% endfor %}
{% endfor %}
"""

# remove the leading and trailing whitespace from the template
trim = false

# changelog footer
# footer = """
# <!-- generated by git-cliff -->
# """

[git]
# allow only conventional commits
# https://www.conventionalcommits.org
conventional_commits = true
# regex for parsing and grouping commits
commit_parsers = [
    { message = "^feat*", group = "Features"},
    { message = "^fix*", group = "Bug Fixes"},
    { message = "^doc*", group = "Documentation"},
    { message = "^perf*", group = "Performance"},
    { message = "^refactor*", group = "Refactor"},
    { message = "^style*", group = "Styling"},
    { message = "^test*", group = "Testing"},
    { message = "^chore\\(release\\): prepare for*", skip = true},
    { message = "^chore*", group = "Miscellaneous Tasks"},
    { body = ".*security", group = "Security"},
]
# filter out the commits that are not matched by commit parsers
filter_commits = true
# glob pattern for matching git tags
# tag_pattern = "v?[0-9]*"
# regex for skipping tags
# skip_tags = "v0.1.0-beta.1"
