[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/opam-switch-mode 3867447130 2/4: feat: Extend release.sh t
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/opam-switch-mode 3867447130 2/4: feat: Extend release.sh to handle NEWS.md updates |
Date: |
Tue, 11 Jul 2023 10:00:34 -0400 (EDT) |
branch: elpa/opam-switch-mode
commit 3867447130d21d5c393f04bc204adfb6f7c3c362
Author: Erik Martin-Dorel <erik@martin-dorel.org>
Commit: Erik Martin-Dorel <erik@martin-dorel.org>
feat: Extend release.sh to handle NEWS.md updates
---
NEWS.md | 1 +
release.sh | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
2 files changed, 56 insertions(+), 4 deletions(-)
diff --git a/NEWS.md b/NEWS.md
index 4e5a9e8260..5985d5fa60 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -22,6 +22,7 @@ The format is based on [Keep a
Changelog](https://keepachangelog.com/en/1.0.0/).
- Replace menu-bar's name (s/Opam-switch/OPSW/) so it matches mode-bar's name
- Change mode-bar's first element, so it expands to "OPSW - Opam Switch Mode"
+- **release.sh**: auto-update **NEWS.md**
### Removed
diff --git a/release.sh b/release.sh
index 5462292256..3ead57f70c 100755
--- a/release.sh
+++ b/release.sh
@@ -7,26 +7,76 @@ set -eu
perl_replace() {
local str1="$1"
local str2="$2"
- perl -wpe 'BEGIN {$str1=shift @ARGV; $str2=shift @ARGV;};
s/$str1/$str2/g;' "$str1" "$str2"
+ perl -wpe 'BEGIN{$str1=shift @ARGV; $str2=shift @ARGV;
$s1=quotemeta($str1); }; s/$s1/$str2/g;' "$str1" "$str2"
+}
+
+tweak_changelog() {
+ local file=NEWS.md
+ local next="$1"
+ local step="$2" # '1' or '2'
+ local next_full
+ next_full="## [$next] - $(date -I)"
+
+ if [ "$step" = '1' ]; then
+ local line_unreleased
+ line_unreleased=$(grep "$file" -e 'Unreleased.*\.\.\.HEAD')
+ local released_tmp
+ released_tmp=$(perl_replace 'Unreleased' "$next" <<<
"$line_unreleased")
+ local released
+ released=$(perl_replace 'HEAD' "$next" <<< "$released_tmp")
+ cp -fv "$file" "$file~"
+ perl_replace "## [Unreleased]" "$next_full" <"$file~" > "$file"
+ cp -fv "$file" "$file~"
+ perl_replace "$line_unreleased" "$released" <"$file~" > "$file"
+
+ elif [ "$step" = '2' ]; then
+ local section="## [Unreleased]
+
+### Added
+
+### Fixed
+
+### Changed
+
+### Removed
+
+"
+ local unreleased="[Unreleased]:
https://github.com/ProofGeneral/opam-switch-mode/compare/$next...HEAD"
+ cp -fv "$file" "$file~"
+ perl_replace "$next_full" "$section$next_full" <"$file~" > "$file"
+ cp -fv "$file" "$file~"
+ perl_replace "<!-- bottom -->" "<!-- bottom -->
+$unreleased" <"$file~" > "$file"
+
+ else
+ echo "tweak_changelog: wrong value for \$2" >&2
+ exit 1
+ fi
}
do_release() {
- file=opam-switch-mode.el
+ local file=opam-switch-mode.el
git checkout master
+ local line
line=$(grep "$file" -e Version:)
- version=${line/*Version: /}
- release=${version%-git}
+ local version=${line/*Version: /}
+ local release=${version%-git}
+ local next
next=$(perl -wne 'my ($major,$minor) = $_ =~ m/^(.+)\.(.+)$/;
print("$major.", $minor+1, "-git");' <<< "$release")
+ local line_release
line_release=$(perl_replace "$version" "$release" <<<"$line")
+ local line_next
line_next=$(perl_replace "$version" "$next" <<<"$line")
cp -fv "$file" "$file~"
perl_replace "$line" "$line_release" <"$file~" > "$file"
+ tweak_changelog "$release" 1
git add -vu
git commit -m "chore: Release $release"
git tag -s "$release" -m "Version $release"
perl_replace "$line" "$line_next" <"$file~" > "$file"
+ tweak_changelog "$release" 2
git branch -D next || true
git checkout -b next
git add -vu
@@ -35,4 +85,5 @@ do_release() {
echo >&2 "Ready to: git push $(git remote) master $release"
echo >&2 "Then, do: git merge next"
}
+
do_release