Skip to content

Commit

Permalink
Fix some CI changelog stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
Astrashh committed Dec 11, 2023
1 parent 172d1e1 commit b7327cb
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 35 deletions.
6 changes: 1 addition & 5 deletions .github/workflows/main.yml
Expand Up @@ -25,10 +25,6 @@ jobs:

env:
repo_url: ${{ github.server_url }}/${{ github.repository }}
changelog: CHANGELOG.md
release_changelog: RELEASE_CHANGELOG.md
start_regex: "^## \\[Unreleased\\]"
end_regex: "^## "

steps:
- name: Checkout repo
Expand Down Expand Up @@ -100,4 +96,4 @@ jobs:
env:
LOGIN_NAME: Polyhedral-Bot
LOGIN_EMAIL: polybot@protonmail.com
ACCESS_TOKEN: ${{ secrets.POLYBOT }}
ACCESS_TOKEN: ${{ secrets.POLYBOT }}
5 changes: 3 additions & 2 deletions .scripts/check-version-bump.sh
@@ -1,7 +1,8 @@
#!/bin/bash

source .scripts/vars.sh

# Search HEAD diff for a change in the pack version
PACK_MANIFEST=pack.yml
version_diff=$(git diff HEAD^ HEAD "$PACK_MANIFEST" | grep '^+version: ')
previous_version_diff=$(git diff HEAD^ HEAD "$PACK_MANIFEST" | grep '^-version: ')

Expand All @@ -18,4 +19,4 @@ else
echo "version-bumped=true" >> "$GITHUB_ENV"
echo "previous_version=$previous_version" >> "$GITHUB_ENV"
echo "version=$version" >> "$GITHUB_ENV"
fi
fi
10 changes: 7 additions & 3 deletions .scripts/grab-release-changelog.sh
Expand Up @@ -2,15 +2,19 @@

# Grabs the unreleased section from the changelog, and cleans it up for publication

source .scripts/lib.sh
source .scripts/vars.sh
ensure_file "$CHANGELOG"

# Copy unreleased changelog to temporary file
echo '- Extracting unreleased changelog'
sed "0,/$start_regex/ d; /$end_regex/,$ d" $changelog > $release_changelog
sed "0,/$UNRELEASED_SECTION_START_REGEX/ d; /$UNRELEASED_SECTION_END_REGEX/,$ d" $CHANGELOG > $RELEASE_CHANGELOG

# Remove unused subheadings from new changelog
echo '- Stripping empty titles from changelog'
echo "$(awk '/^$/ {if (i) {b=b $0 "\n"} else {print $0 }; next} \
/^###/ {i=1; b=$0; next} {if (i) {print b}; i=0; print $0; next}' $release_changelog)" > $release_changelog
/^###/ {i=1; b=$0; next} {if (i) {print b}; i=0; print $0; next}' $RELEASE_CHANGELOG)" > $RELEASE_CHANGELOG

if ! grep -q '[^[:space:]]' "$release_changelog"; then
if ! grep -q '[^[:space:]]' "$RELEASE_CHANGELOG"; then
echo '- WARNING: Unreleased changelog is empty!'
fi
37 changes: 37 additions & 0 deletions .scripts/lib.sh
@@ -0,0 +1,37 @@
ensure_env() {
local var_name="$1"
if [ -z "${!var_name}" ]; then
echo "Environment variable '$var_name' is not defined, aborting..."
exit 1
fi
}

ensure_file() {
if [ ! -f "$1" ]; then
echo "No file found $1"
exit 1
fi
}

delete_between() {
local file="$1"
local start_regex="$2"
local end_regex="$3"
sed -i "/$start_regex/,/$end_regex/{//!d}" "$file"
}

append_after() {
local file="$1"
local regex="$2"
local text="${3//$'\n'/\\$'\n'}" # Escape newlines in text
sed -i "/$regex/a $text" "$file"
}

replace_in_file() {
local file="$1"
local start_regex="$2"
local end_regex="$3"
local text="$4"
delete_between "$file" "$start_regex" "$end_regex"
append_after "$file" "$start_regex" "$text"
}
59 changes: 34 additions & 25 deletions .scripts/update-changelog.sh
Expand Up @@ -2,35 +2,44 @@

# Moves unreleased section to a new version release section, and updates anchors at the bottom of the changelog

echo "Updating $changelog for v$version:"

echo '- Inserting release changelog'
sed -i "/$start_regex/,/$end_regex/{//!d}" $changelog
sed -i "/$start_regex/ {
a ### Added
a
a
a ### Changed
a
a
a ### Removed
a
a
a ### Fixed
a
a
a ## [v$version]
r $release_changelog
a
}" $changelog
source .scripts/lib.sh
source .scripts/vars.sh
ensure_env "version"
ensure_env "previous_version"
ensure_env "repo_url"
ensure_file "$CHANGELOG"
ensure_file "$RELEASE_CHANGELOG"

echo "Updating $CHANGELOG for v$version:"

echo '- Clearing unreleased section'
replace_in_file "$CHANGELOG" "$UNRELEASED_SECTION_START_REGEX" "$UNRELEASED_SECTION_END_REGEX" "\
### Added
### Changed
### Removed
### Fixed
"

echo "- Inserting new version section"
append_after "$CHANGELOG" "$VERSIONS_SECTION_START_REGEX" "
## [v$version]
$(cat $RELEASE_CHANGELOG)"

echo '- Adding new version anchor'
sed -i "/^\[Unreleased]/a [v$version]: $repo_url/compare/v$previous_version...v$version" $changelog
sed -i "/^\[Unreleased]/a [v$version]: $repo_url/compare/v$previous_version...v$version" $CHANGELOG

echo '- Updating unreleased anchor'
sed -i "s|^\[Unreleased\]: .*|[Unreleased]: $repo_url/compare/v$version...HEAD|" $changelog
sed -i "s|^\[Unreleased\]: .*|[Unreleased]: $repo_url/compare/v$version...HEAD|" $CHANGELOG

echo "v$version changelog:"
echo '---'
cat $release_changelog
echo '---'
cat $RELEASE_CHANGELOG
echo '---'
6 changes: 6 additions & 0 deletions .scripts/vars.sh
@@ -0,0 +1,6 @@
CHANGELOG="CHANGELOG.md"
RELEASE_CHANGELOG="RELEASE_CHANGELOG.md"
PACK_MANIFEST="pack.yml"
UNRELEASED_SECTION_START_REGEX="^## \\[Unreleased\\]"
UNRELEASED_SECTION_END_REGEX="^<!--"
VERSIONS_SECTION_START_REGEX="^-->"

0 comments on commit b7327cb

Please sign in to comment.