69 lines
2.6 KiB
Bash
Executable File
69 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
export LC_ALL=C
|
|
set -e
|
|
|
|
echo "========================================================"
|
|
echo " Palladium Core - Master Version Updater"
|
|
echo "========================================================"
|
|
|
|
# 1. Get Inputs
|
|
read -p "Enter CURRENT version string (e.g. 1.4.3): " OLD_VERSION
|
|
read -p "Enter NEW version string (e.g. 1.5.0): " NEW_VERSION
|
|
|
|
if [ -z "$OLD_VERSION" ] || [ -z "$NEW_VERSION" ]; then
|
|
echo "Error: Version strings cannot be empty."
|
|
exit 1
|
|
fi
|
|
|
|
# Parse the NEW version into parts (Major.Minor.Revision)
|
|
IFS='.' read -r -a V_PARTS <<< "$NEW_VERSION"
|
|
MAJOR="${V_PARTS[0]}"
|
|
MINOR="${V_PARTS[1]}"
|
|
REV="${V_PARTS[2]}"
|
|
|
|
# Default to 0 if revision is missing (e.g. 1.5 becomes 1.5.0)
|
|
if [ -z "$REV" ]; then REV="0"; fi
|
|
|
|
echo "--------------------------------------------------------"
|
|
echo "Targeting: $MAJOR.$MINOR.$REV"
|
|
echo "--------------------------------------------------------"
|
|
|
|
# 2. Global Text Replacement (Docs, Manpages, Comments)
|
|
echo "[1/3] Performing global search & replace ($OLD_VERSION -> $NEW_VERSION)..."
|
|
# We exclude .git directory and binaries to avoid corruption
|
|
grep -rIl "$OLD_VERSION" . | grep -v "^./.git" | grep -v "update_version.sh" | while read -r file ; do
|
|
sed -i "s/$OLD_VERSION/$NEW_VERSION/g" "$file"
|
|
done
|
|
echo "Global text replacement done."
|
|
|
|
# 3. Update configure.ac (The Linux/Unix Build System)
|
|
echo "[2/3] Updating configure.ac..."
|
|
if [ -f "configure.ac" ]; then
|
|
sed -i "s/define(_CLIENT_VERSION_MAJOR, [0-9]*)/define(_CLIENT_VERSION_MAJOR, $MAJOR)/g" configure.ac
|
|
sed -i "s/define(_CLIENT_VERSION_MINOR, [0-9]*)/define(_CLIENT_VERSION_MINOR, $MINOR)/g" configure.ac
|
|
sed -i "s/define(_CLIENT_VERSION_REVISION, [0-9]*)/define(_CLIENT_VERSION_REVISION, $REV)/g" configure.ac
|
|
echo "✔ configure.ac updated."
|
|
else
|
|
echo "❌ Warning: configure.ac not found."
|
|
fi
|
|
|
|
# 4. Update Windows MSVC Config (The Windows Build System)
|
|
echo "[3/3] Updating build_msvc/palladium_config.h..."
|
|
MSVC_FILE="build_msvc/palladium_config.h"
|
|
if [ -f "$MSVC_FILE" ]; then
|
|
sed -i "s/#define CLIENT_VERSION_MAJOR [0-9]*/#define CLIENT_VERSION_MAJOR $MAJOR/g" "$MSVC_FILE"
|
|
sed -i "s/#define CLIENT_VERSION_MINOR [0-9]*/#define CLIENT_VERSION_MINOR $MINOR/g" "$MSVC_FILE"
|
|
sed -i "s/#define CLIENT_VERSION_REVISION [0-9]*/#define CLIENT_VERSION_REVISION $REV/g" "$MSVC_FILE"
|
|
echo "✔ $MSVC_FILE updated."
|
|
else
|
|
echo "❌ Warning: $MSVC_FILE not found."
|
|
fi
|
|
|
|
echo "========================================================"
|
|
echo "Update Complete! Please run:"
|
|
echo "1. make clean"
|
|
echo "2. ./autogen.sh"
|
|
echo "3. ./configure"
|
|
echo "4. make"
|
|
echo "========================================================"
|