From 124c31eea62b1f992061ea6088298ddeb0f3e3da Mon Sep 17 00:00:00 2001 From: welpo Date: Fri, 19 Jan 2024 17:50:03 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=B7=20chore(release):=20improve=20rele?= =?UTF-8?q?ase=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- release | 54 +++++++++++++++++------------------------------------- 1 file changed, 17 insertions(+), 37 deletions(-) diff --git a/release b/release index cd5ea1d92..16676f42a 100644 --- a/release +++ b/release @@ -1,6 +1,7 @@ #!/usr/bin/env bash # Bash script to prepare a release using git-cliff. # Inspired by https://github.com/orhun/git-cliff/blob/main/release.sh +set -eu # Check if a version tag is provided. if [ "$#" -eq 1 ]; then @@ -47,19 +48,12 @@ export GIT_CLIFF_TEMPLATE="\ {%- endfor %} {% endfor %}" -# Create a temporary file for the git-cliff configuration. -# It's the same as the one in cliff.toml, except less Markdown. -temp_cliff_config=$(mktemp) -# Set a trap to remove the temporary file on exit. -trap "rm -f '$temp_cliff_config'" EXIT - -cat > "$temp_cliff_config" << 'EOF' -[changelog] -body = """ +# Cleaner template for the tag description. +export GIT_CLIFF__CHANGELOG__BODY=$(cat <<'EOF' {% if version %}\ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} {% else %}\ - ## [unreleased] + ## unreleased {% endif %}\ {% macro commit(commit, in_breaking_section=false) -%} @@ -95,36 +89,22 @@ body = """ {% endif -%} {% endfor -%} {% endfor %}\n -""" - -trim = true -footer = """ - -""" - -[git] -conventional_commits = true -filter_unconventional = true -split_commits = false -commit_preprocessors = [ - { pattern = ' +$', replace = "" }, - { pattern = ' +', replace = " " }, - { pattern = ' *(:\w+:|[\p{Emoji_Presentation}\p{Extended_Pictographic}\u{200D}]) *', replace = "" }, -] -commit_parsers = [ - { message = "^feat", group = "✨ Features" }, - { message = "^fix", group = "🐛 Bug Fixes" }, - [truncated for brevity]... -] -protect_breaking_commits = true -filter_commits = true -tag_pattern = "v[0-9].*" -topo_order = false -sort_commits = "newest" EOF +) + +# Same as cliff.toml, except we don't replace issue number with a link (which aren't clickable on tag descriptions). +export GIT_CLIFF__GIT__PREPROCESSORS=$(cat <<'EOF' +# Remove trailing whitespace. +{ pattern = ' +$', replace = "" }, +# Replace multiple spaces with a single space. +{ pattern = ' +', replace = " " }, +# Remove gitmoji, both actual UTF emoji and :emoji: +{ pattern = ' *(:\w+:|[\p{Emoji_Presentation}\p{Extended_Pictographic}\u{200D}]) *', replace = "" } +EOF +) # Generate the tag description. -changelog=$(git cliff --config "$temp_cliff_config" --tag "$VERSION_TAG" --unreleased --strip all) +changelog=$(git cliff --tag "$VERSION_TAG" --unreleased --strip all) # Create a signed and annotated tag. git tag -s -a "$VERSION_TAG" -m "Release $VERSION_TAG" -m "$changelog"