ploughshares/versionbump.sh

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"