110 lines
3.6 KiB
Bash
Executable File
110 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Version Update Script for Meetingnotes
|
|
# Usage: ./update_version.sh [major|minor|patch|build] [custom_version]
|
|
|
|
set -e
|
|
|
|
PROJECT_FILE="Meetingnotes.xcodeproj/project.pbxproj"
|
|
CURRENT_MARKETING_VERSION=$(grep -m1 "MARKETING_VERSION" "$PROJECT_FILE" | sed 's/.*= \(.*\);/\1/')
|
|
CURRENT_BUILD_VERSION=$(grep -m1 "CURRENT_PROJECT_VERSION" "$PROJECT_FILE" | sed 's/.*= \(.*\);/\1/')
|
|
|
|
if [ -z "$CURRENT_MARKETING_VERSION" ] || [ -z "$CURRENT_BUILD_VERSION" ]; then
|
|
echo "❌ Could not determine current version from project file"
|
|
echo " Make sure $PROJECT_FILE exists and contains MARKETING_VERSION and CURRENT_PROJECT_VERSION"
|
|
exit 1
|
|
fi
|
|
|
|
echo "📋 Current Version Info:"
|
|
echo " Marketing Version: $CURRENT_MARKETING_VERSION"
|
|
echo " Build Version: $CURRENT_BUILD_VERSION"
|
|
echo ""
|
|
|
|
# Function to increment version
|
|
increment_version() {
|
|
local version=$1
|
|
local type=$2
|
|
|
|
IFS='.' read -ra VERSION_PARTS <<< "$version"
|
|
local major=${VERSION_PARTS[0]:-0}
|
|
local minor=${VERSION_PARTS[1]:-0}
|
|
local patch=${VERSION_PARTS[2]:-0}
|
|
|
|
case $type in
|
|
"major")
|
|
major=$((major + 1))
|
|
minor=0
|
|
patch=0
|
|
;;
|
|
"minor")
|
|
minor=$((minor + 1))
|
|
patch=0
|
|
;;
|
|
"patch")
|
|
patch=$((patch + 1))
|
|
;;
|
|
*)
|
|
echo "❌ Invalid increment type: $type"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo "${major}.${minor}.${patch}"
|
|
}
|
|
|
|
# Function to update version in project file
|
|
update_project_version() {
|
|
local new_marketing_version=$1
|
|
local new_build_version=$2
|
|
|
|
# Update marketing version
|
|
sed -i '' "s/MARKETING_VERSION = .*;/MARKETING_VERSION = $new_marketing_version;/g" "$PROJECT_FILE"
|
|
|
|
# Update build version
|
|
sed -i '' "s/CURRENT_PROJECT_VERSION = .*;/CURRENT_PROJECT_VERSION = $new_build_version;/g" "$PROJECT_FILE"
|
|
|
|
echo "✅ Updated project file:"
|
|
echo " Marketing Version: $CURRENT_MARKETING_VERSION → $new_marketing_version"
|
|
echo " Build Version: $CURRENT_BUILD_VERSION → $new_build_version"
|
|
}
|
|
|
|
# Main logic
|
|
case $1 in
|
|
"major"|"minor"|"patch")
|
|
NEW_MARKETING_VERSION=$(increment_version "$CURRENT_MARKETING_VERSION" "$1")
|
|
NEW_BUILD_VERSION=$((CURRENT_BUILD_VERSION + 1))
|
|
update_project_version "$NEW_MARKETING_VERSION" "$NEW_BUILD_VERSION"
|
|
;;
|
|
"build")
|
|
NEW_BUILD_VERSION=$((CURRENT_BUILD_VERSION + 1))
|
|
update_project_version "$CURRENT_MARKETING_VERSION" "$NEW_BUILD_VERSION"
|
|
;;
|
|
"custom")
|
|
if [ -z "$2" ]; then
|
|
echo "❌ Please provide a custom version number"
|
|
echo "Usage: ./update_version.sh custom 1.2.0"
|
|
exit 1
|
|
fi
|
|
NEW_BUILD_VERSION=$((CURRENT_BUILD_VERSION + 1))
|
|
update_project_version "$2" "$NEW_BUILD_VERSION"
|
|
;;
|
|
*)
|
|
echo "🔢 Version Update Script"
|
|
echo ""
|
|
echo "Usage:"
|
|
echo " ./update_version.sh major # 1.0 → 2.0"
|
|
echo " ./update_version.sh minor # 1.0 → 1.1"
|
|
echo " ./update_version.sh patch # 1.0 → 1.0.1"
|
|
echo " ./update_version.sh build # Keep version, increment build"
|
|
echo " ./update_version.sh custom 1.2.0 # Set specific version"
|
|
echo ""
|
|
echo "Current version: $CURRENT_MARKETING_VERSION (build $CURRENT_BUILD_VERSION)"
|
|
exit 0
|
|
;;
|
|
esac
|
|
|
|
echo ""
|
|
echo "🎯 Next steps:"
|
|
echo " 1. Test the app to make sure everything works"
|
|
echo " 2. Run ./scripts/build_release.sh to create a release"
|
|
echo " 3. The new version will be: $(grep -m1 "MARKETING_VERSION" "$PROJECT_FILE" | sed 's/.*= \(.*\);/\1/')" |