[workspace]
git_tag_name = "{{ version }}"
git_release_name = "{{ version }}"
git_release_enable = true
git_tag_enable = true
publish = true
semver_check = false
pr_name = "๐ Release {{ version }}"
[changelog]
header = """# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
"""
body = """
## {{ version | trim_start_matches(pat="v") }} - {{ timestamp | date(format="%Y-%m-%d") }}
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}\
{% set first_line = commit.message | split(pat="\n") | first %}\
{% set parts = first_line | split(pat="||") %}\
- {{ parts | first | upper_first | trim | trim_end_matches(pat=".") }}\
{% if commit.breaking %} (**BREAKING**){% endif %}.\
{% if parts | length > 1 %} {{ parts | last }}{% endif %}
{% endfor %}\
{% endfor %}\
"""
protect_breaking_commits = true
commit_preprocessors = [
{ pattern = "^โฌ๏ธ +Update [^ ]+ to ", replace_command = """sh -c '
msg=$(cat)
dep=$(echo "$msg" | sed -E "s/^[^ ]+ +Update ([^ ]+) to.*/\\1/")
latest=$(git log --oneline --all -E --grep="Update $dep to" --format=%H 2>/dev/null \
| head -1)
if [ "$COMMIT_SHA" != "$latest" ]; then printf "๐"; else printf "%s" "$msg"; fi
'""" },
{ pattern = "^([^\\p{L}\\p{N}\\s]+) [\\w, -]+: ", replace = "$1 " },
{ pattern = ".*", replace_command = """sh -c '
title=$(cat)
ref=$(git log -1 --format=%b $COMMIT_SHA 2>/dev/null \
| grep -oE "(Fixes|Closes|Resolves).*#[0-9]+" | grep -oE "#[0-9]+" | head -1)
if [ -n "$ref" ]; then printf "%s||%s\\n" "$title" "$ref"
else printf "%s\\n" "$title"; fi
'""" },
]
commit_parsers = [
{ message = "^[Mm]erge", skip = true },
{ message = "^๐", skip = true },
{ message = "^[\\p{Emoji}\\p{Emoji_Presentation}\\p{Extended_Pictographic}]+$", skip = true },
{ message = "^โจ", group = "Added" },
{ message = "^๐", group = "Added" },
{ message = "^๐ท", group = "Added" },
{ message = "^๐", group = "Fixed" },
{ message = "^๐", group = "Fixed" },
{ message = "^๐ฉน", group = "Fixed" },
{ message = "^๐ฅ
", group = "Fixed" },
{ message = "^โก", group = "Performance" },
{ message = "^๐", group = "Documentation" },
{ message = "^๐ก", group = "Documentation" },
{ message = "^โป๏ธ", group = "Changed" },
{ message = "^๐จ", group = "Changed" },
{ message = "^๐", group = "Changed" },
{ message = "^๐ง", group = "Changed" },
{ message = "^๐๏ธ", group = "Changed" },
{ message = "^๐", group = "Changed" },
{ message = "^๐ฅ", group = "Breaking" },
{ message = "^๐ฅ", group = "Removed" },
{ message = "^๐๏ธ", group = "Deprecated" },
{ message = "^โ", group = "Dependencies" },
{ message = "^โ", group = "Dependencies" },
{ message = "^๐", group = "Dependencies" },
{ message = "^โฌ๏ธ", group = "Dependencies" },
{ message = "^โฌ๏ธ", group = "Dependencies" },
{ message = "^๐", group = "Security" },
{ message = "^โ
", group = "Testing" },
{ message = "^๐งช", group = "Testing" },
{ message = "^๐ท", group = "CI" },
{ message = "^๐", group = "CI" },
{ message = ".*", group = "Other" },
]