# configuration file for git-cliff (0.1.0)

[changelog]
# changelog header
header = """
# `is_ci` 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/is_ci/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"
