From dee57ac4125ef21fa941b17ad328a9e18086c009 Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Thu, 18 Jun 2026 12:45:52 +1000 Subject: [PATCH 1/8] First pass at version bump script. --- bin/version-bump.sh | 73 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100755 bin/version-bump.sh diff --git a/bin/version-bump.sh b/bin/version-bump.sh new file mode 100755 index 0000000..e310e26 --- /dev/null +++ b/bin/version-bump.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +set -euo pipefail + +if [[ $# -ne 1 ]]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +bump_type="$1" + +case "$bump_type" in + major|minor|patch) + ;; + *) + echo "Invalid bump type: $bump_type" >&2 + echo "Expected one of: major, minor, patch" >&2 + exit 1 + ;; +esac + +script_dir="$(cd "$(dirname "$0")" && pwd)" +repo_dir="$(cd "$script_dir/.." && pwd)" + +cd "$repo_dir" + +for required_file in readme.txt simple-page-ordering.php class-simple-page-ordering.php package.json package-lock.json CHANGELOG.md; do + if [[ ! -f "$required_file" ]]; then + echo "Missing required file: $required_file" >&2 + exit 1 + fi +done + +current_version="$(node -p "require('./package.json').version")" + +if [[ -z "$current_version" ]]; then + echo "Unable to determine current version from package.json" >&2 + exit 1 +fi + +next_version="$(node -e "const [major, minor, patch] = require('./package.json').version.split('.').map(Number); const bump = process.argv[1]; const next = { major: [major + 1, 0, 0], minor: [major, minor + 1, 0], patch: [major, minor, patch + 1] }[bump]; if (!next || next.some(Number.isNaN)) { process.exit(1); } process.stdout.write(next.join('.'));" "$bump_type")" + +if [[ -z "$next_version" ]]; then + echo "Unable to calculate next version" >&2 + exit 1 +fi + +if grep -Eq "^## \[$next_version\]" CHANGELOG.md; then + echo "Changelog already contains version $next_version" >&2 + exit 1 +fi + +npm version "$bump_type" --no-git-tag-version >/dev/null + +new_version="$(node -p "require('./package.json').version")" + +if [[ -z "$new_version" ]]; then + echo "Unable to determine updated version from package.json" >&2 + exit 1 +fi + +perl -0pi -e "s/^(Stable tag:\s+).* +/\${1}$new_version\n/m" readme.txt + +perl -0pi -e "s/^(\s*\* Version:\s+).* +/\${1}$new_version\n/m" simple-page-ordering.php + +perl -0pi -e "s/^(define\( 'SIMPLE_PAGE_ORDERING_VERSION', ')([^']+)('\s*\);) +/\${1}$new_version\${3}\n/m" class-simple-page-ordering.php + +perl -0pi -e "s/^(## \[Unreleased\].*\n\n)/\${1}## [$new_version] - TBD\n\n/m" CHANGELOG.md + +echo "Bumped version to $new_version" From b32464065e898bdfae5e84108d4e63b504e48e58 Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Thu, 18 Jun 2026 12:52:14 +1000 Subject: [PATCH 2/8] Add changelog entry to readme.txt. --- bin/version-bump.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bin/version-bump.sh b/bin/version-bump.sh index e310e26..f917244 100755 --- a/bin/version-bump.sh +++ b/bin/version-bump.sh @@ -50,6 +50,11 @@ if grep -Eq "^## \[$next_version\]" CHANGELOG.md; then exit 1 fi +if grep -Eq "^= $next_version( - .*)? =$" readme.txt; then + echo "readme.txt changelog already contains version $next_version" >&2 + exit 1 +fi + npm version "$bump_type" --no-git-tag-version >/dev/null new_version="$(node -p "require('./package.json').version")" @@ -62,6 +67,8 @@ fi perl -0pi -e "s/^(Stable tag:\s+).* /\${1}$new_version\n/m" readme.txt +perl -0pi -e "s/^(== Changelog ==\r?\n\r?\n)/\${1}= $new_version - TBD =\n\n/m" readme.txt + perl -0pi -e "s/^(\s*\* Version:\s+).* /\${1}$new_version\n/m" simple-page-ordering.php From 464667fe3e16c52505340a945fd8eb1d94b47b7e Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Thu, 18 Jun 2026 12:55:37 +1000 Subject: [PATCH 3/8] Remove all but four most recent entries from readme changelog. --- bin/version-bump.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/bin/version-bump.sh b/bin/version-bump.sh index f917244..ffef5ce 100755 --- a/bin/version-bump.sh +++ b/bin/version-bump.sh @@ -55,6 +55,11 @@ if grep -Eq "^= $next_version( - .*)? =$" readme.txt; then exit 1 fi +if ! grep -Fq "[View historical changelog details here]" readme.txt; then + echo "Unable to find historical changelog link in readme.txt" >&2 + exit 1 +fi + npm version "$bump_type" --no-git-tag-version >/dev/null new_version="$(node -p "require('./package.json').version")" @@ -69,6 +74,43 @@ perl -0pi -e "s/^(Stable tag:\s+).* perl -0pi -e "s/^(== Changelog ==\r?\n\r?\n)/\${1}= $new_version - TBD =\n\n/m" readme.txt +readme_tmp="$(mktemp)" +awk ' + BEGIN { + in_changelog = 0 + release_count = 0 + skipping_old = 0 + } + /^== Changelog ==\r?$/ { + in_changelog = 1 + print + next + } + in_changelog && /^\[View historical changelog details here\]/ { + skipping_old = 0 + in_changelog = 0 + print + next + } + in_changelog { + if ( $0 ~ /^= [0-9]+\.[0-9]+\.[0-9]+( - .*)? =\r?$/ ) { + release_count++ + if ( release_count > 4 ) { + skipping_old = 1 + next + } + skipping_old = 0 + } + if ( skipping_old ) { + next + } + } + { + print + } +' readme.txt > "$readme_tmp" +mv "$readme_tmp" readme.txt + perl -0pi -e "s/^(\s*\* Version:\s+).* /\${1}$new_version\n/m" simple-page-ordering.php From a607b234c4fbd725b5ad3b9c962390d075030ff1 Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Thu, 18 Jun 2026 12:57:17 +1000 Subject: [PATCH 4/8] Move requires at least header to readme.txt. --- readme.txt | 1 + simple-page-ordering.php | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.txt b/readme.txt index 3e9f64d..048d5f8 100644 --- a/readme.txt +++ b/readme.txt @@ -2,6 +2,7 @@ Contributors: 10up, jakemgold, welcher, helen, thinkoomph, jeffpaul Donate link: http://10up.com/plugins/simple-page-ordering-wordpress/ Tags: order, re-order, ordering, page, menu order +Requires at least: 6.8 Tested up to: 7.0 Stable tag: 2.8.0 License: GPLv2 or later diff --git a/simple-page-ordering.php b/simple-page-ordering.php index 0b5e64d..d396654 100644 --- a/simple-page-ordering.php +++ b/simple-page-ordering.php @@ -4,7 +4,6 @@ * Plugin URI: http://10up.com/plugins/simple-page-ordering-wordpress/ * Description: Order your pages and hierarchical post types using drag and drop on the built in page list. For further instructions, open the "Help" tab on the Pages screen. * Version: 2.8.0 - * Requires at least: 6.8 * Requires PHP: 7.4 * Author: 10up * Author URI: https://10up.com From b53a4227f8b35f2a04fc5a1a051aab188a5974f2 Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Thu, 18 Jun 2026 13:03:00 +1000 Subject: [PATCH 5/8] Add link to changelog file. --- bin/version-bump.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bin/version-bump.sh b/bin/version-bump.sh index ffef5ce..fa97909 100755 --- a/bin/version-bump.sh +++ b/bin/version-bump.sh @@ -50,6 +50,11 @@ if grep -Eq "^## \[$next_version\]" CHANGELOG.md; then exit 1 fi +if grep -Eq "^\[$next_version\]: https://github.com/10up/simple-page-ordering/compare/" CHANGELOG.md; then + echo "Changelog footer already contains version $next_version" >&2 + exit 1 +fi + if grep -Eq "^= $next_version( - .*)? =$" readme.txt; then echo "readme.txt changelog already contains version $next_version" >&2 exit 1 @@ -119,4 +124,6 @@ perl -0pi -e "s/^(define\( 'SIMPLE_PAGE_ORDERING_VERSION', ')([^']+)('\s*\);) perl -0pi -e "s/^(## \[Unreleased\].*\n\n)/\${1}## [$new_version] - TBD\n\n/m" CHANGELOG.md +perl -0pi -e "s#^(\[Unreleased\]: .*\n)#\${1}[$new_version]: https://github.com/10up/simple-page-ordering/compare/$current_version...$new_version\n#m" CHANGELOG.md + echo "Bumped version to $new_version" From 132b1f2808e15d47589730e931e31ca14158a294 Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Thu, 18 Jun 2026 13:04:58 +1000 Subject: [PATCH 6/8] Ignore the bin directory. --- .distignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.distignore b/.distignore index 859f4d7..fdc590f 100644 --- a/.distignore +++ b/.distignore @@ -3,6 +3,7 @@ /.github /.wordpress-org /assets +/bin /node_modules /tests /vendor From 5dd00c56e53bf9ea65eaf65d088203fff28d6a81 Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Thu, 18 Jun 2026 13:09:26 +1000 Subject: [PATCH 7/8] Update release instruction docs to account for new script. --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c2a5a5a..bd3daf0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -68,8 +68,8 @@ Head to the Pages list table and drag and drop pages to change the order. Refres ### Release instructions 1. Branch: Starting from `develop`, cut a release branch named `release/X.Y.Z` for your changes. -2. Version bump: Bump the version number in `package.json`, `package-lock.json`, `readme.txt`, and `simple-page-ordering.php` if it does not already reflect the version being released. In `class-simple-page-ordering.php` update the plugin `SIMPLE_PAGE_ORDERING_VERSION` constant. -3. Changelog: Add/update the changelog in `readme.txt` and `CHANGELOG.md`. +2. Version bump: Run `bin/version-bump.sh ` to bump the version number in `package.json`, `package-lock.json`, `readme.txt`, and `simple-page-ordering.php` if it does not already reflect the version being released. In `class-simple-page-ordering.php` update the plugin `SIMPLE_PAGE_ORDERING_VERSION` constant. +3. Changelog: Populate the changelog entries in `readme.txt` and `CHANGELOG.md` with the log and to include the date of release. 4. Props: update `CREDITS.md` file with any new contributors, confirm maintainers are accurate. 5. New files: Check to be sure any new files/paths that are unnecessary in the production version are included in `.distignore`. 6. Readme updates: Make any other readme changes as necessary. `README.md` is geared toward GitHub and `readme.txt` contains WordPress.org-specific content. The two are slightly different. From ac526b10176db7aa3d413d55e1f7ad321c18a48f Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Thu, 18 Jun 2026 13:21:16 +1000 Subject: [PATCH 8/8] Validate that all required commands are available. --- bin/version-bump.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/bin/version-bump.sh b/bin/version-bump.sh index fa97909..9649b61 100755 --- a/bin/version-bump.sh +++ b/bin/version-bump.sh @@ -2,6 +2,21 @@ set -euo pipefail +required_commands=(awk dirname grep mktemp mv node npm perl) +missing_commands=() + +for required_command in "${required_commands[@]}"; do + if ! command -v "$required_command" >/dev/null 2>&1; then + missing_commands+=("$required_command") + fi +done + +if (( ${#missing_commands[@]} > 0 )); then + echo "Missing required command(s): ${missing_commands[*]}" >&2 + echo "Please install the missing command(s) and try again." >&2 + exit 1 +fi + if [[ $# -ne 1 ]]; then echo "Usage: $0 " >&2 exit 1