From f46c90361f2f05ed5dc7a7a7b9a54326242574f9 Mon Sep 17 00:00:00 2001 From: "Azzam S.A" Date: Tue, 30 Jul 2024 11:26:49 +0700 Subject: [PATCH] docs: introduce `git-cliff` --- .cliff.toml | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++ justfile | 5 +++++ 2 files changed, 68 insertions(+) create mode 100644 .cliff.toml diff --git a/.cliff.toml b/.cliff.toml new file mode 100644 index 00000000..31d574d6 --- /dev/null +++ b/.cliff.toml @@ -0,0 +1,63 @@ +[changelog] +# changelog header +header = """ +# Changelog +All notable changes to this project will be documented in this file. +For previous changelog entries, see [_docs/CHANGELOG-OLD.md](_docs/CHANGELOG-OLD.md). +""" +# template for the changelog body +# https://tera.netlify.app/docs/#introduction +body = """ +{% if version %}\ + ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} +{% else %}\ + ## [unreleased] +{% endif %}\ +{% for group, commits in commits | group_by(attribute="group") %} + ### {{ group | striptags | trim | upper_first }} + {% for commit in commits %} + {%- if commit.scope -%} + - **{{ commit.scope }}:** {{ commit.message | upper_first }} ([{{ commit.id | truncate(length=7, end="") }}](https://github.com/BiznetGIO/RESTKnot/commit/{{ commit.id }})) + {% if commit.breaking -%} + {% raw %} {% endraw %}- **BREAKING!** ⚠️ : {{ commit.breaking_description }} + {% endif -%} + {% if commit.body -%} + {% raw %}\n{% endraw %}{% raw %} {% endraw %}{{ commit.body | indent(width=4) }}{% raw %}\n{% endraw %} + {% endif -%} + {% else -%} + - {{ commit.message | upper_first }} ([{{ commit.id | truncate(length=7, end="") }}](https://github.com/BiznetGIO/RESTKnot/commit/{{ commit.id }})) + {% if commit.breaking -%} + {% raw %} {% endraw %}- **BREAKING!** ⚠️ : {{ commit.breaking_description }} + {% endif -%} + {% if commit.body -%} + {% raw %}\n{% endraw %}{% raw %} {% endraw %}{{ commit.body | indent(width=4) }}{% raw %}\n{% endraw %} + {% endif -%} + {% endif -%} + {% endfor -%} + {% raw %}\n{% endraw %}\ +{% endfor %}\n +""" +# remove the leading and trailing whitespaces from the template +trim = true +# changelog footer +footer = """""" + +[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 = "^refactor", group = "🚜 Refactor" }, + { message = "^doc", group = "📚 Documentation" }, + { message = "^perf", group = "⚡ Performance" }, + { message = "^test", group = "🧪 Testing" }, + { message = "^build", group = "🏗️ Build" }, + { message = "^ci", group = "🤖 CI" }, +] +# glob pattern for matching git tags +tag_pattern = "v[0-9]*" +# sort the commits inside sections by oldest/newest order +sort_commits = "newest" diff --git a/justfile b/justfile index c6eb2243..53d3c712 100644 --- a/justfile +++ b/justfile @@ -27,3 +27,8 @@ fmt-check: lint: # Run `typos --write-changes` to fix the mistakes typos + +# Generate changelog +changelog-gen version: + git-cliff --config .cliff.toml --output CHANGELOG.md --tag {{ version }} v0.7.13.. + just fmt