2024-03-15 04:02:18 +01:00
[ changelog ]
# changelog header
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 ) . \ n
"" "
body = "" "
{ # Check if there is a `BREAKING-CHANGE` footer in the message or not #}\
{ % macro is_breaking ( commit ) % } \
{ { "BREAKING-CHANGE" in commit . message } } \
{ % endmacro is_breaking % } \
{ # Return the commit header #}\
{ % macro commit_header ( commit ) % } \
{ { commit . message | split ( pat = "\n" ) | nth ( n = 0 ) | upper_first } } \
{ % endmacro commit_header % } \
2024-05-04 17:04:50 +02:00
{ # Return the `BREAKING-CHANGE` footer message #}\
2024-03-15 04:02:18 +01:00
{ % macro bc_des ( commit ) % } \
2024-05-04 17:04:50 +02:00
{ % set lines = [ ] % } \
{ % set found_breaking = false % } \
{ % for line in commit . message | split ( pat = "\n" ) % } \
{ % if found_breaking and line is not containing ( ":" ) % } \
{ % set_global lines = lines | concat ( with = line ) % } \
{ % elif found_breaking and line is containing ( ":" ) % } \
{ % set_global found_breaking = false % } \
{ % endif % } \
2024-03-15 04:02:18 +01:00
{ % if line is starting_with ( "BREAKING-CHANGE" ) % } \
2024-05-04 17:04:50 +02:00
{ % set_global found_breaking = true % } \
{ % set breaking_line = line | split ( pat = ":" ) | nth ( n = 1 ) % } \
{ % set_global lines = lines | concat ( with = breaking_line ) % } \
2024-03-15 04:02:18 +01:00
{ % endif % } \
{ % endfor % } \
2024-05-04 17:04:50 +02:00
{ % if lines | length ! = 0 % } \
{ { lines | join ( sep = "\n" ) | trim_end ( pat = "\n" ) } } \
{ % endif % } \
2024-03-15 04:02:18 +01:00
{ % endmacro bc_des % } \
{ % if version % } \
{ % if previous . version % } \
## [{{ version | trim_start_matches(pat="v") }}](<REPO>/compare/{{ previous.version }}..{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
{ % else % } \
## {{ version | trim_start_matches(pat="v") }} - {{ timestamp | date(format="%Y-%m-%d") }}
{ % endif % } \
{ % else % } \
## unreleased
{ % endif % } \
{ % for group , commits in commits | group_by ( attribute = "group" ) % } \
### {{ group | upper_first }}
{ % for commit in commits | sort ( attribute = "message" ) % } \
- { { self : : commit_header ( commit = commit ) } } ( [ ` { { commit . id | truncate ( length = 7 , end = "" ) } } ` ] ( < REPO > / commit / { { commit . id } } ) )
{ % if self : : is_breaking ( commit = commit ) = = "true" % } \
\ t- * * BC * * : { { self : : bc_des ( commit = commit ) } }
{ % endif % } \
{ % endfor % } \
{ % endfor % } \ n
"" "
# remove the leading and trailing whitespace from the template
trim = true
# changelog footer
footer = "" "
This changelog was generated by [ git-cliff ] ( https : / / github . com / orhun / git-cliff )
"" "
# postprocessors
postprocessors = [
{ pattern = '<REPO>' , replace = "https://git.4rs.nl/awiteb/lprs" } , # replace repository URL
2024-03-17 08:49:31 +01:00
{ pattern = '- (\w+)(\(\w+\))?:' , replace = "- " } , # Remove the type
2024-03-15 04:02:18 +01:00
{ pattern = '- \((\w+)\):' , replace = "- (**$1**)" } , # Make the scope blod
{ pattern = "\t" , replace = " " } , # Replace tap with 4 spaces
]
[ git ]
# parse the commits based on https://www.conventionalcommits.org
2024-03-17 08:49:31 +01:00
conventional_commits = false
2024-03-15 04:02:18 +01:00
# filter out the commits that are not conventional
filter_unconventional = true
# process each line of a commit as an individual commit
split_commits = false
# regex for preprocessing the commit messages
commit_preprocessors = [
2024-04-30 15:11:41 +02:00
{ pattern = '\((\w+\s)?#([0-9]+)\)' , replace = "([**#${2}**](<REPO>/issues/${2}))" } , # replace issue numbers (Note the PR is also an issue in Forgejo, so this will also link to PRs)
2024-03-15 04:02:18 +01:00
{ pattern = ' +$' , replace = "" } , # Remove trailing whitespace.
{ pattern = ' +' , replace = " " } , # Replace multiple spaces with a single space.
]
# regex for parsing and grouping commits
commit_parsers = [
# Gitmoji
{ message = "^feat" , group = "Added" } ,
{ message = "^fix" , group = "Fixed" } ,
{ message = "^(refactor|change)" , group = "Changed" } ,
{ message = "^deprecate" , group = "Deprecated" } ,
{ message = "^remove" , group = "Removed" } ,
{ message = "^security" , group = "Security" } ,
]
# protect breaking changes from being skipped due to matching a skipping commit_parser
protect_breaking_commits = false
# filter out the commits that are not matched by commit parsers
filter_commits = false
# regex for matching git tags
tag_pattern = "v[0-9]+\\.[0-9]+\\.[0-9]+"
# regex for skipping tags
skip_tags = ""
# regex for ignoring tags
ignore_tags = "v[0-9]+\\.[0-9]+\\.[0-9]+-(alpha|beta|rc)(\\.[0-9]+)?"
# sort the tags topologically
topo_order = false
# sort the commits inside sections by oldest/newest order
sort_commits = "oldest"