# configuration file for git-cliff (0.1.0)

[changelog]
# changelog header
header = """
# `supports-unicode` 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/supports-unicode/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 = false
# glob pattern for matching git tags
# tag_pattern = "[0-9]*"
# regex for skipping tags
# skip_tags = "v0.1.0-beta.1"
