90 lines
2.6 KiB
Bash
Executable File
90 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# versionbump.sh - Script to bump version numbers in the VERSION file and update all relevant files
|
|
# Usage: ./versionbump.sh [major|minor|patch|set VERSION]
|
|
|
|
set -e
|
|
|
|
VERSION_FILE="VERSION"
|
|
DOCKER_COMPOSE_FILE="docker-compose.yml"
|
|
|
|
# Check if VERSION file exists
|
|
if [ ! -f "$VERSION_FILE" ]; then
|
|
echo "Error: $VERSION_FILE does not exist."
|
|
exit 1
|
|
fi
|
|
|
|
# Read current version
|
|
CURRENT_VERSION=$(cat "$VERSION_FILE")
|
|
echo "Current version: $CURRENT_VERSION"
|
|
|
|
# Function to update version in all necessary files
|
|
update_version_everywhere() {
|
|
NEW_VERSION=$1
|
|
|
|
# 1. Update VERSION file
|
|
echo "$NEW_VERSION" > "$VERSION_FILE"
|
|
echo "Updated $VERSION_FILE to $NEW_VERSION"
|
|
|
|
# 2. Log the version change
|
|
echo "$(date): Version changed from $CURRENT_VERSION to $NEW_VERSION" >> version_history.log
|
|
|
|
# 3. Update version in console log messages
|
|
# This ensures the version is visible in logs when the app starts
|
|
sed -i.bak "s/print(f\"Connected to PostgreSQL at/print(f\"Ploughshares v$NEW_VERSION - Connected to PostgreSQL at/" docker/ploughshares/app.py
|
|
rm -f docker/ploughshares/app.py.bak
|
|
echo "Updated version in app.py console logs"
|
|
|
|
# 4. Update version in docker-compose.yml
|
|
sed -i.bak "s/APP_VERSION=.*/APP_VERSION=$NEW_VERSION/" "$DOCKER_COMPOSE_FILE"
|
|
rm -f "$DOCKER_COMPOSE_FILE.bak"
|
|
echo "Updated version in $DOCKER_COMPOSE_FILE"
|
|
|
|
echo "Version update complete! New version: $NEW_VERSION"
|
|
echo "Remember to rebuild and restart the application for changes to take effect."
|
|
}
|
|
|
|
# Process command
|
|
if [ "$1" = "set" ]; then
|
|
if [ -z "$2" ]; then
|
|
echo "Error: No version specified. Usage: $0 set VERSION"
|
|
exit 1
|
|
fi
|
|
NEW_VERSION="$2"
|
|
echo "Setting version to: $NEW_VERSION"
|
|
update_version_everywhere "$NEW_VERSION"
|
|
exit 0
|
|
fi
|
|
|
|
# Split version into components
|
|
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"
|
|
|
|
# Check which part to bump
|
|
case "$1" in
|
|
major)
|
|
MAJOR=$((MAJOR + 1))
|
|
MINOR=0
|
|
PATCH=0
|
|
;;
|
|
minor)
|
|
MINOR=$((MINOR + 1))
|
|
PATCH=0
|
|
;;
|
|
patch)
|
|
PATCH=$((PATCH + 1))
|
|
;;
|
|
*)
|
|
echo "Usage: $0 [major|minor|patch|set VERSION]"
|
|
echo "Examples:"
|
|
echo " $0 minor # Bump minor version"
|
|
echo " $0 set 1.2.3 # Set specific version"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Create new version string
|
|
NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}"
|
|
echo "Bumping to version: $NEW_VERSION"
|
|
|
|
# Update version in all necessary files
|
|
update_version_everywhere "$NEW_VERSION" |