diff --git a/AirshipFrameworkProxy.podspec b/AirshipFrameworkProxy.podspec index 9b6794a..56380a7 100644 --- a/AirshipFrameworkProxy.podspec +++ b/AirshipFrameworkProxy.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| - s.version = "14.10.0" + s.version = "15.0.0" s.name = "AirshipFrameworkProxy" s.summary = "Airship iOS mobile framework proxy" s.documentation_url = "https://docs.airship.com/platform/mobile" @@ -15,7 +15,7 @@ Pod::Spec.new do |s| s.requires_arc = true s.swift_version = "6.0" s.source_files = "ios/AirshipFrameworkProxy/**/*.{h,m,swift}" - s.dependency 'Airship', "19.11.1" + s.dependency 'Airship', "20.0.1" s.source_files = 'ios/AirshipFrameworkProxyLoader/**/*.{swift,h,m,c,cc,mm,cpp}', 'ios/AirshipFrameworkProxy/**/*.{swift,h,m,c,cc,mm,cpp}' end diff --git a/Package.swift b/Package.swift index 1910faa..8b2faf0 100644 --- a/Package.swift +++ b/Package.swift @@ -15,7 +15,7 @@ let package = Package( ) ], dependencies: [ - .package(url: "https://github.com/urbanairship/ios-library.git", from: "19.11.1") + .package(url: "https://github.com/urbanairship/ios-library.git", from: "20.0.1") ], targets: [ .target( diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index a896807..cf4f3cc 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -1,8 +1,8 @@ [versions] # Airship -airshipProxy = '14.10.0' -airship = '19.13.5' +airshipProxy = '15.0.0' +airship = '20.0.1' # Gradle plugins androidGradlePlugin = '8.3.2' diff --git a/scripts/version_bump.sh b/scripts/version_bump.sh index 2ad62a0..42a5313 100755 --- a/scripts/version_bump.sh +++ b/scripts/version_bump.sh @@ -22,23 +22,70 @@ SPARKLE="✨" echo -e "${BLUE}${BOLD}${ROCKET} Airship Mobile Framework Proxy Version Bumper ${ROCKET}${NC}\n" +# Fetch latest release version from GitHub +fetch_latest_release() { + local repo=$1 + local version=$(curl -s "https://api.github.com/repos/${repo}/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/' | sed 's/^v//') + + # If API call fails or rate limited, try gh CLI as fallback + if [ -z "$version" ] && command -v gh &> /dev/null; then + version=$(gh release view --repo "${repo}" --json tagName -q .tagName 2>/dev/null | sed 's/^v//') + fi + + echo "$version" +} + +# Get latest SDK releases from GitHub +get_latest_releases() { + echo -e "${INFO} Checking latest SDK releases from GitHub..." + + IOS_SDK_LATEST=$(fetch_latest_release "urbanairship/ios-library") + ANDROID_SDK_LATEST=$(fetch_latest_release "urbanairship/android-library") + + if [ -z "$IOS_SDK_LATEST" ]; then + IOS_SDK_LATEST="unknown" + fi + + if [ -z "$ANDROID_SDK_LATEST" ]; then + ANDROID_SDK_LATEST="unknown" + fi + + echo "" +} + # Get current versions get_current_versions() { echo -e "${INFO} Detecting current versions..." - - # Check iOS SDK version from Podfile - IOS_SDK_CURRENT=$(grep "pod 'Airship'" ios/Podfile | grep -o "[0-9]*\.[0-9]*\.[0-9]*" || echo "unknown") - + + # Check iOS SDK version from podspec dependency + IOS_SDK_CURRENT=$(grep "s.dependency.*'Airship'" AirshipFrameworkProxy.podspec | grep -o "[0-9]*\.[0-9]*\.[0-9]*" | head -1 || echo "unknown") + # Check Android SDK version from libs.versions.toml - ANDROID_SDK_CURRENT=$(grep "airship =" android/gradle/libs.versions.toml | grep -o "[0-9]*\.[0-9]*\.[0-9]*" || echo "unknown") - - # Check proxy version from podspec - PROXY_CURRENT=$(grep "s.version" AirshipFrameworkProxy.podspec | grep -o "[0-9]*\.[0-9]*\.[0-9]*" || echo "unknown") - - echo -e "${CHECK} Current versions detected:" - echo -e " ${BOLD}Proxy:${NC} ${PROXY_CURRENT}" - echo -e " ${BOLD}iOS SDK:${NC} ${IOS_SDK_CURRENT}" - echo -e " ${BOLD}Android SDK:${NC} ${ANDROID_SDK_CURRENT}" + ANDROID_SDK_CURRENT=$(grep "^airship =" android/gradle/libs.versions.toml | grep -o "[0-9]*\.[0-9]*\.[0-9]*" | head -1 || echo "unknown") + + # Check proxy version from podspec (only the first s.version line, not s.source) + PROXY_CURRENT=$(grep "^[[:space:]]*s\.version" AirshipFrameworkProxy.podspec | grep -o "[0-9]*\.[0-9]*\.[0-9]*" | head -1 || echo "unknown") + + echo -e "${CHECK} Version comparison:" + echo "" + printf " ${BOLD}%-20s %-15s %-15s${NC}\n" "Component" "Current" "Latest" + printf " %-20s %-15s %-15s\n" "--------------------" "---------------" "---------------" + printf " %-20s %-15s %-15s\n" "Proxy" "${PROXY_CURRENT}" "N/A" + + # Show iOS SDK comparison + if [ "$IOS_SDK_LATEST" != "unknown" ] && [ "$IOS_SDK_CURRENT" != "$IOS_SDK_LATEST" ]; then + printf " %-20s %-15s ${GREEN}%-15s${NC}\n" "iOS SDK" "${IOS_SDK_CURRENT}" "${IOS_SDK_LATEST} ⬆" + else + printf " %-20s %-15s %-15s\n" "iOS SDK" "${IOS_SDK_CURRENT}" "${IOS_SDK_LATEST}" + fi + + # Show Android SDK comparison + if [ "$ANDROID_SDK_LATEST" != "unknown" ] && [ "$ANDROID_SDK_CURRENT" != "$ANDROID_SDK_LATEST" ]; then + printf " %-20s %-15s ${GREEN}%-15s${NC}\n" "Android SDK" "${ANDROID_SDK_CURRENT}" "${ANDROID_SDK_LATEST} ⬆" + else + printf " %-20s %-15s %-15s\n" "Android SDK" "${ANDROID_SDK_CURRENT}" "${ANDROID_SDK_LATEST}" + fi + echo "" } @@ -47,12 +94,12 @@ prompt_version() { local current=$1 local name=$2 local default=$3 - + if [ -z "$default" ]; then default=$current fi - - read -p "$name version [$default]: " version + + read -p "$name version [$default]: " version >&2 version=${version:-$default} echo $version } @@ -73,8 +120,9 @@ update_versions() { # Podspec file if [ -f "AirshipFrameworkProxy.podspec" ]; then echo -e "${INFO} Updating AirshipFrameworkProxy.podspec" - sed -i '' "s/s.version[[:space:]]*=[[:space:]]*\"[0-9]*\.[0-9]*\.[0-9]*\"/s.version = \"${proxy_version}\"/" AirshipFrameworkProxy.podspec - sed -i '' "s/s.dependency[[:space:]]*'Airship',[[:space:]]*\"[0-9]*\.[0-9]*\.[0-9]*\"/s.dependency 'Airship', \"${ios_sdk_version}\"/" AirshipFrameworkProxy.podspec + # Match version pattern more flexibly (handles numbers or corrupted values) + sed -i '' "s/\(s.version[[:space:]]*=[[:space:]]*\)\"[^\"]*\"/\1\"${proxy_version}\"/" AirshipFrameworkProxy.podspec + sed -i '' "s/\(s.dependency[[:space:]]*'Airship',[[:space:]]*\)\"[^\"]*\"/\1\"${ios_sdk_version}\"/" AirshipFrameworkProxy.podspec else echo -e "${WARN} AirshipFrameworkProxy.podspec not found" fi @@ -82,24 +130,17 @@ update_versions() { # Package.swift if [ -f "Package.swift" ]; then echo -e "${INFO} Updating Package.swift" - sed -i '' "s/from: \"[0-9]*\.[0-9]*\.[0-9]*\"/from: \"${ios_sdk_version}\"/" Package.swift + sed -i '' "s/\(from: \)\"[^\"]*\"/\1\"${ios_sdk_version}\"/" Package.swift else echo -e "${WARN} Package.swift not found" fi - - # iOS Podfile - if [ -f "ios/Podfile" ]; then - echo -e "${INFO} Updating ios/Podfile" - sed -i '' "s/pod 'Airship', '[0-9]*\.[0-9]*\.[0-9]*'/pod 'Airship', '${ios_sdk_version}'/" ios/Podfile - else - echo -e "${WARN} ios/Podfile not found" - fi - + # Android libs.versions.toml if [ -f "android/gradle/libs.versions.toml" ]; then echo -e "${INFO} Updating android/gradle/libs.versions.toml" - sed -i '' "s/airshipProxy = '[0-9]*\.[0-9]*\.[0-9]*'/airshipProxy = '${proxy_version}'/" android/gradle/libs.versions.toml - sed -i '' "s/airship = '[0-9]*\.[0-9]*\.[0-9]*'/airship = '${android_sdk_version}'/" android/gradle/libs.versions.toml + # Match version pattern more flexibly (handles numbers or corrupted values) + sed -i '' "s/\(^airshipProxy = \)'[^']*'/\1'${proxy_version}'/" android/gradle/libs.versions.toml + sed -i '' "s/\(^airship = \)'[^']*'/\1'${android_sdk_version}'/" android/gradle/libs.versions.toml else echo -e "${WARN} android/gradle/libs.versions.toml not found" fi @@ -110,22 +151,23 @@ update_versions() { # Verify changes verify_changes() { echo -e "\n${INFO} Verifying changes..." - - git diff --color AirshipFrameworkProxy.podspec Package.swift ios/Podfile android/gradle/libs.versions.toml - + + git diff --color AirshipFrameworkProxy.podspec Package.swift android/gradle/libs.versions.toml + echo -e "\n${INFO} Next steps:" echo -e " 1. Review the changes above" - echo -e " 2. Run 'pod install' in the ios directory" - echo -e " 3. PR the changes" + echo -e " 2. Commit and push the changes" + echo -e " 3. Create a PR" } # Main execution +get_latest_releases get_current_versions echo -e "${BLUE}${BOLD}Enter new versions (press Enter to keep current)${NC}" -PROXY_VERSION=$(prompt_version "$PROXY_CURRENT" "Proxy" "14.1.1") -IOS_SDK_VERSION=$(prompt_version "$IOS_SDK_CURRENT" "iOS SDK" "19.2.1") -ANDROID_SDK_VERSION=$(prompt_version "$ANDROID_SDK_CURRENT" "Android SDK" "19.5.1") +PROXY_VERSION=$(prompt_version "$PROXY_CURRENT" "Proxy") +IOS_SDK_VERSION=$(prompt_version "$IOS_SDK_CURRENT" "iOS SDK") +ANDROID_SDK_VERSION=$(prompt_version "$ANDROID_SDK_CURRENT" "Android SDK") update_versions "$PROXY_VERSION" "$IOS_SDK_VERSION" "$ANDROID_SDK_VERSION" verify_changes