diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 0000000..06bde0f --- /dev/null +++ b/cliff.toml @@ -0,0 +1,77 @@ +# git-cliff ~ configuration file +# https://git-cliff.org/docs/configuration + +[changelog] +# template for the changelog body +# https://keats.github.io/tera/docs/#introduction +body = """ +{% if version %}\ + {%- set versionlink = version -%} +{% else %}\ + {%- set versionlink = "unreleased" -%} +{% endif %}\ +## [{{ versionlink }}] — {{ timestamp | date(format="%Y-%m-%d") }} + +### Changed +{% for commit in commits %} + - {{ commit.message | split(pat="\n") | first | upper_first | trim }} \ + {% if commit.github.username %}([@{{ commit.github.username }}]){% raw %} {% endraw %}{%- endif -%} \ + [c:{{ commit.id | truncate(length=7, end="") }}] +{%- endfor -%} + +{%- macro remote_url() -%} + https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} +{%- endmacro -%} + +{% raw %}\n{% endraw %} + +[{{ versionlink }}]: {{ self::remote_url() }}/compare/{{ previous.version }}...{{ versionlink }} + +\ +{% for contributor in github.contributors | filter(attribute="is_first_time", value=true) %} + [@{{ contributor.username }}]: https://github.com/{{ contributor.username }} +{%- endfor -%}\ +{% raw %}\n{% endraw %} + +\ +{% for commit in commits %} + [c:{{ commit.id | truncate(length=7, end="") }}]: {{ self::remote_url() }}/commit/{{ commit.id }} +{%- endfor -%} +{% raw %}\n{% endraw %} + +""" +# remove the leading and trailing whitespace from the template +trim = true +# changelog footer +footer = """ + +""" +# postprocessors +postprocessors = [] + +[git] +# parse the commits based on https://www.conventionalcommits.org +conventional_commits = false +# 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 = [ + # remove issue numbers from commits + { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "" }, +] +# 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" +# sort the tags topologically +topo_order = false +# sort the commits inside sections by oldest/newest order +sort_commits = "newest"