108 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			TOML
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			TOML
		
	
	
	
	
	
# git-cliff ~ configuration file
 | 
						|
# https://git-cliff.org/docs/configuration
 | 
						|
#
 | 
						|
# Lines starting with "#" are comments.
 | 
						|
# Configuration options are organized into tables and keys.
 | 
						|
# See documentation for more information on available options.
 | 
						|
 | 
						|
[changelog]
 | 
						|
# changelog header
 | 
						|
header = """
 | 
						|
"""
 | 
						|
# template for the changelog body
 | 
						|
# https://keats.github.io/tera/docs/#introduction
 | 
						|
body = """
 | 
						|
{%- macro remote_url() -%}
 | 
						|
  https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
 | 
						|
{%- endmacro -%}
 | 
						|
 | 
						|
{% macro print_commit(commit) -%}
 | 
						|
    - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
 | 
						|
        {% if commit.breaking %}[**breaking**] {% endif %}\
 | 
						|
        {{ commit.message | upper_first }} - \
 | 
						|
        ([{{ commit.id | truncate(length=7, end="") }}]({{ self::remote_url() }}/commit/{{ commit.id }}))\
 | 
						|
{% endmacro -%}
 | 
						|
 | 
						|
{% if version %}\
 | 
						|
    {% if previous.version %}\
 | 
						|
        ## [{{ version | trim_start_matches(pat="v") }}]\
 | 
						|
          ({{ self::remote_url() }}/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 | striptags | trim | upper_first }}
 | 
						|
    {% for commit in commits
 | 
						|
    | filter(attribute="scope")
 | 
						|
    | sort(attribute="scope") %}
 | 
						|
        {{ self::print_commit(commit=commit) }}
 | 
						|
    {%- endfor -%}
 | 
						|
    {% raw %}\n{% endraw %}\
 | 
						|
    {%- for commit in commits %}
 | 
						|
        {%- if not commit.scope -%}
 | 
						|
            {{ self::print_commit(commit=commit) }}
 | 
						|
        {% endif -%}
 | 
						|
    {% endfor -%}
 | 
						|
{% endfor %}\n
 | 
						|
"""
 | 
						|
# template for the changelog footer
 | 
						|
footer = """
 | 
						|
<!-- generated by git-cliff -->
 | 
						|
"""
 | 
						|
# remove the leading and trailing whitespace from the templates
 | 
						|
trim = true
 | 
						|
# postprocessors
 | 
						|
postprocessors = [
 | 
						|
    { pattern = '<REPO>', replace = "https://github.com/wfxr/csview" }, # replace repository URL
 | 
						|
]
 | 
						|
 | 
						|
[git]
 | 
						|
# parse the commits based on https://www.conventionalcommits.org
 | 
						|
conventional_commits = true
 | 
						|
# 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 = [
 | 
						|
    { pattern = ' (#[0-9]+)', replace = '(${1})' },
 | 
						|
    { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))" },
 | 
						|
]
 | 
						|
# regex for parsing and grouping commits
 | 
						|
commit_parsers = [
 | 
						|
    { message = "^feat", group = "<!-- 0 -->🚀 Features" },
 | 
						|
    { message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
 | 
						|
    { message = "^doc", group = "<!-- 3 -->📚 Documentation" },
 | 
						|
    { message = "^perf", group = "<!-- 4 -->⚡ Performance" },
 | 
						|
    { message = "^refactor\\(clippy\\)", skip = true },
 | 
						|
    { message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
 | 
						|
    { message = "^style", group = "<!-- 5 -->🎨 Styling" },
 | 
						|
    { message = "^test", group = "<!-- 6 -->🧪 Testing" },
 | 
						|
    { message = "^chore: [rR]elease", skip = true },
 | 
						|
    { message = "^\\(cargo-release\\)", skip = true },
 | 
						|
    { message = "^chore\\(deps.*\\)", skip = true },
 | 
						|
    { message = "^chore\\(pr\\)", skip = true },
 | 
						|
    { message = "^chore\\(pull\\)", skip = true },
 | 
						|
    { message = "^chore|^ci", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" },
 | 
						|
    { body = ".*security", group = "<!-- 8 -->🛡️ Security" },
 | 
						|
    { message = "^revert", group = "<!-- 9 -->◀️ Revert" },
 | 
						|
]
 | 
						|
# 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].*"
 | 
						|
# regex for skipping tags
 | 
						|
skip_tags = "beta|alpha"
 | 
						|
# regex for ignoring tags
 | 
						|
ignore_tags = "rc|v2.1.0|v2.1.1"
 | 
						|
# sort the tags topologically
 | 
						|
topo_order = false
 | 
						|
# sort the commits inside sections by oldest/newest order
 | 
						|
sort_commits = "newest"
 |