-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdetect_sdk_versions.sh
More file actions
executable file
·119 lines (99 loc) · 3.91 KB
/
detect_sdk_versions.sh
File metadata and controls
executable file
·119 lines (99 loc) · 3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/usr/bin/env bash
set -e
# Detect SDK versions and calculate proxy version bump
# Outputs: PROXY_VERSION, IOS_VERSION, ANDROID_VERSION, BUMP_TYPE
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
# Source shared utilities
source "$SCRIPT_DIR/lib/version_utils.sh"
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
BOLD='\033[1m'
NC='\033[0m'
# Check gh CLI authentication
if ! gh auth status &>/dev/null; then
echo -e "${RED}Error: gh CLI not authenticated${NC}"
echo "Run: gh auth login"
exit 1
fi
echo -e "${BLUE}${BOLD}Detecting SDK Versions${NC}\n"
# Get current proxy version from podspec
CURRENT_PROXY_VERSION=$(grep "s.version" "$REPO_ROOT/AirshipFrameworkProxy.podspec" | grep -o "[0-9]*\.[0-9]*\.[0-9]*")
echo -e "Current proxy version: ${BOLD}$CURRENT_PROXY_VERSION${NC}"
# Get current iOS SDK dependency
CURRENT_IOS_VERSION=$(grep "s.dependency.*'Airship'" "$REPO_ROOT/AirshipFrameworkProxy.podspec" | grep -o "[0-9]*\.[0-9]*\.[0-9]*")
echo -e "Current iOS SDK: ${BOLD}$CURRENT_IOS_VERSION${NC}"
# Get current Android SDK dependency
CURRENT_ANDROID_VERSION=$(grep "airship =" "$REPO_ROOT/android/gradle/libs.versions.toml" | grep -o "[0-9]*\.[0-9]*\.[0-9]*")
echo -e "Current Android SDK: ${BOLD}$CURRENT_ANDROID_VERSION${NC}"
echo -e "\n${BLUE}Fetching latest SDK versions...${NC}"
# Fetch latest iOS SDK version
LATEST_IOS_VERSION=$(get_latest_release_version "urbanairship/ios-library")
if [ $? -ne 0 ] || [ -z "$LATEST_IOS_VERSION" ]; then
echo -e "${RED}Failed to fetch iOS SDK version${NC}"
exit 1
fi
echo -e "Latest iOS SDK: ${BOLD}$LATEST_IOS_VERSION${NC}"
# Fetch latest Android SDK version
LATEST_ANDROID_VERSION=$(get_latest_release_version "urbanairship/android-library")
if [ $? -ne 0 ] || [ -z "$LATEST_ANDROID_VERSION" ]; then
echo -e "${RED}Failed to fetch Android SDK version${NC}"
exit 1
fi
echo -e "Latest Android SDK: ${BOLD}$LATEST_ANDROID_VERSION${NC}"
# Determine bump types for each SDK
IOS_BUMP=$(determine_bump_type "$CURRENT_IOS_VERSION" "$LATEST_IOS_VERSION")
ANDROID_BUMP=$(determine_bump_type "$CURRENT_ANDROID_VERSION" "$LATEST_ANDROID_VERSION")
echo -e "\n${BLUE}SDK Changes:${NC}"
echo -e "iOS: ${CURRENT_IOS_VERSION} → ${LATEST_IOS_VERSION} (${BOLD}${IOS_BUMP}${NC})"
echo -e "Android: ${CURRENT_ANDROID_VERSION} → ${LATEST_ANDROID_VERSION} (${BOLD}${ANDROID_BUMP}${NC})"
# Determine overall bump type (max of both)
if [ "$IOS_BUMP" = "major" ] || [ "$ANDROID_BUMP" = "major" ]; then
BUMP_TYPE="major"
elif [ "$IOS_BUMP" = "minor" ] || [ "$ANDROID_BUMP" = "minor" ]; then
BUMP_TYPE="minor"
elif [ "$IOS_BUMP" = "patch" ] || [ "$ANDROID_BUMP" = "patch" ]; then
BUMP_TYPE="patch"
else
BUMP_TYPE="none"
fi
# Calculate new proxy version
IFS='.' read -r major minor patch <<< "$CURRENT_PROXY_VERSION"
case "$BUMP_TYPE" in
major)
major=$((major + 1))
minor=0
patch=0
;;
minor)
minor=$((minor + 1))
patch=0
;;
patch)
patch=$((patch + 1))
;;
none)
echo -e "\n${YELLOW}No SDK version changes detected. No proxy bump needed.${NC}"
exit 0
;;
esac
NEW_PROXY_VERSION="$major.$minor.$patch"
echo -e "\n${GREEN}${BOLD}Bump Decision:${NC}"
echo -e "Type: ${BOLD}${BUMP_TYPE}${NC}"
echo -e "New version: ${BOLD}${NEW_PROXY_VERSION}${NC}"
# Output for GitHub Actions / scripts
echo ""
echo "PROXY_VERSION=$NEW_PROXY_VERSION"
echo "IOS_VERSION=$LATEST_IOS_VERSION"
echo "ANDROID_VERSION=$LATEST_ANDROID_VERSION"
echo "BUMP_TYPE=$BUMP_TYPE"
# If running in GitHub Actions, set outputs
if [ -n "$GITHUB_OUTPUT" ]; then
echo "proxy_version=$NEW_PROXY_VERSION" >> "$GITHUB_OUTPUT"
echo "ios_version=$LATEST_IOS_VERSION" >> "$GITHUB_OUTPUT"
echo "android_version=$LATEST_ANDROID_VERSION" >> "$GITHUB_OUTPUT"
echo "bump_type=$BUMP_TYPE" >> "$GITHUB_OUTPUT"
fi