diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 0000000..f9736bb --- /dev/null +++ b/cliff.toml @@ -0,0 +1,52 @@ +# Configuration file for [`git-cliff`](https://github.com/orhun/git-cliff) +# See https://git-cliff.org/docs/configuration + +[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.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n +""" +# https://tera.netlify.app/docs/#introduction +body = """ +{% if version %}\ + ## [{{ version | trim_start_matches(pat="v") }}](https://github.com/paradigmxyz/revm-inspectors/releases/tag/v{{ version | trim_start_matches(pat="v") }}) - {{ timestamp | date(format="%Y-%m-%d") }} +{% endif %}\ +{% for group, commits in commits | group_by(attribute="group") %} + ### {{ group | title }} + {% for commit in commits %} + - {% if commit.scope %}[{{ commit.scope }}] {% endif %}{{ commit.message | upper_first | split(pat="\\n") | first }}\ + {% endfor %} +{% endfor %}\n +""" +trim = true +footer = "" + +[git] +conventional_commits = true +filter_unconventional = false +commit_preprocessors = [ + { pattern = '#(\d+)', replace = "[#$1](https://github.com/paradigmxyz/revm-inspectors/issues/$1)" }, +] +commit_parsers = [ + { message = "^[Ff]eat", group = "Features" }, + { message = "^[Ff]ix", group = "Bug Fixes" }, + { message = "^[Dd]oc", group = "Documentation" }, + { message = ".*\\b([Dd]eps|[Dd]ependencies|[Bb]ump)\\b", group = "Dependencies" }, + { message = "^[Pp]erf", group = "Performance" }, + { message = "^[Rr]efactor", group = "Refactor" }, + { message = ".*\\b([Ss]tyle|[Ff]mt|[Ff]ormat)\\b", group = "Styling" }, + { message = "^[Tt]est", group = "Testing" }, + { message = "^[Cc]hore", group = "Miscellaneous Tasks" }, + + { message = ".*", group = "Other" }, +] +protect_breaking_commits = false +filter_commits = false +tag_pattern = "v[0-9]*" +skip_tags = "beta|alpha" +ignore_tags = "rc" +sort_commits = "newest" diff --git a/release.toml b/release.toml index c8b8a58..12bd6dc 100644 --- a/release.toml +++ b/release.toml @@ -6,3 +6,5 @@ sign-commit = true sign-tag = true shared-version = true pre-release-commit-message = "chore: release {{version}}" +tag-prefix = "" # tag only once instead of per every crate +pre-release-hook = ["sh", "-c", "$WORKSPACE_ROOT/scripts/changelog.sh --tag {{version}}"] diff --git a/scripts/changelog.sh b/scripts/changelog.sh new file mode 100755 index 0000000..1aa5796 --- /dev/null +++ b/scripts/changelog.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -e -o pipefail + +root=$(dirname "$(dirname "$0")") +cmd=(git cliff --workdir "$root" --output "$root/CHANGELOG.md" "$@") + +if [ "$DRY_RUN" = "true" ]; then + echo "skipping due to dry run: ${cmd[*]}" >&2 + exit 0 +else + "${cmd[@]}" +fi \ No newline at end of file