emacs-elpa-diffs
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]