new version commit
This commit is contained in:
84
apps/DatabaseSquash/VersionUpdater/VersionUpdater.sh
Normal file
84
apps/DatabaseSquash/VersionUpdater/VersionUpdater.sh
Normal file
@@ -0,0 +1,84 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
||||
|
||||
if [[ "$PROJECT_ROOT" =~ ^/([a-zA-Z])/(.*) ]]; then
|
||||
DRIVE_LETTER="${BASH_REMATCH[1]}"
|
||||
PATH_REMAINDER="${BASH_REMATCH[2]}"
|
||||
PROJECT_ROOT="${DRIVE_LETTER^^}:/${PATH_REMAINDER}"
|
||||
fi
|
||||
|
||||
ACORE_JSON_PATH="$PROJECT_ROOT/acore.json"
|
||||
DB_WORLD_UPDATE_DIR="$PROJECT_ROOT/data/sql/updates/db_world"
|
||||
|
||||
VERSION_LINE=$(grep '"version"' "$ACORE_JSON_PATH")
|
||||
VERSION=$(echo "$VERSION_LINE" | sed -E 's/.*"version": *"([^"]+)".*/\1/')
|
||||
|
||||
# Parse version into parts
|
||||
if [[ "$VERSION" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)(.*)$ ]]; then
|
||||
MAJOR="${BASH_REMATCH[1]}"
|
||||
SUFFIX="${BASH_REMATCH[4]}"
|
||||
NEW_VERSION="$((MAJOR + 1)).0.0$SUFFIX"
|
||||
|
||||
# Replace version in file
|
||||
sed -i.bak -E "s/(\"version\": *\")[^\"]+(\" *)/\1$NEW_VERSION\2/" "$ACORE_JSON_PATH"
|
||||
rm -f "$ACORE_JSON_PATH.bak"
|
||||
|
||||
echo "✅ Version updated to $NEW_VERSION"
|
||||
else
|
||||
echo "Error: Could not parse version string: $VERSION"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extract the new major version from NEW_VERSION
|
||||
if [[ "$NEW_VERSION" =~ ^([0-9]+)\. ]]; then
|
||||
NEW_MAJOR="${BASH_REMATCH[1]}"
|
||||
else
|
||||
echo "Error: Unable to extract major version from $NEW_VERSION"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Prepare SQL content
|
||||
DB_VERSION_CONTENT="'ACDB 335.${NEW_MAJOR}-dev'"
|
||||
SQL_QUERY="UPDATE \`version\` SET \`db_version\`=${DB_VERSION_CONTENT}, \`cache_id\`=${NEW_MAJOR} LIMIT 1;"
|
||||
|
||||
# Format date as yyyy_mm_dd
|
||||
TODAY=$(date +%Y_%m_%d)
|
||||
|
||||
# Ensure directory exists
|
||||
mkdir -p "$DB_WORLD_UPDATE_DIR"
|
||||
|
||||
# List existing files for today
|
||||
existing_files=($(find "$DB_WORLD_UPDATE_DIR" -maxdepth 1 -type f -name "${TODAY}_*.sql" 2>/dev/null))
|
||||
|
||||
# Determine next xx counter
|
||||
# Determine next xx
|
||||
COUNTER="00"
|
||||
if [ ${#existing_files[@]} -gt 0 ]; then
|
||||
max=0
|
||||
for file in "${existing_files[@]}"; do
|
||||
basename=$(basename "$file")
|
||||
if [[ "$basename" =~ ^${TODAY}_([0-9]{2})\.sql$ ]]; then
|
||||
num=${BASH_REMATCH[1]}
|
||||
if [[ "$num" =~ ^[0-9]+$ ]] && (( 10#$num > max )); then
|
||||
max=$((10#$num))
|
||||
fi
|
||||
fi
|
||||
done
|
||||
COUNTER=$(printf "%02d" $((max + 1)))
|
||||
fi
|
||||
|
||||
# Compose final file path
|
||||
SQL_FILENAME="${TODAY}_${COUNTER}.sql"
|
||||
SQL_FILE_PATH="$DB_WORLD_UPDATE_DIR/$SQL_FILENAME"
|
||||
|
||||
# Write to file
|
||||
{
|
||||
echo "-- Auto-generated by VersionUpdater.sh on $(date)"
|
||||
echo "$SQL_QUERY"
|
||||
} > "$SQL_FILE_PATH"
|
||||
|
||||
echo "✅ SQL file created at $SQL_FILE_PATH"
|
||||
10
apps/DatabaseSquash/VersionUpdater/versionupdater.md
Normal file
10
apps/DatabaseSquash/VersionUpdater/versionupdater.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# The AzerothCore Version Updater for Database Squashes
|
||||
|
||||
> [!CAUTION]
|
||||
> These steps are only for project maintainers who intend to update base files.
|
||||
|
||||
## Usage
|
||||
|
||||
1. Run VersionUpdater.sh from the current directory.
|
||||
2. The tool will update acore.json and create a new update sql file.
|
||||
3. Done.
|
||||
Reference in New Issue
Block a user