Skip to content

Commit 2db750f

Browse files
Automate SDK update (#92)
Use just us/usi/usa command to update both/iOS/Android SDKs. The command will commit all the changes to a separate branch. Use "branch" and "commit" params to modify this behavior.
1 parent e2b28df commit 2db750f

File tree

3 files changed

+205
-0
lines changed

3 files changed

+205
-0
lines changed

justfile

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,15 @@ alias cnm := clear-node-modules
44
alias d := docs
55
alias gd := get-dependencies
66
alias od := open-docs
7+
alias pt := push-tag
8+
alias r := release
9+
alias us := update-sdk
10+
alias usa := update-sdk-android
11+
alias usal := update-sdk-android-latest
12+
alias usi := update-sdk-ios
13+
alias usil := update-sdk-ios-latest
14+
alias usl := update-sdk-latest
15+
alias v := version
716

817
# Source: https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
918
# \ are escaped
@@ -39,9 +48,26 @@ get-dependencies:
3948
yarn --cwd plugin_android_location_services_google_19_0_1
4049
yarn --cwd plugin_android_push_service_firebase
4150

51+
latest-android:
52+
@curl -s https://s3-us-west-2.amazonaws.com/m2.hypertrack.com/com/hypertrack/sdk-android/maven-metadata-sdk-android.xml | grep latest | grep -o -E '{{SEMVER_REGEX}}' | head -n 1
53+
54+
latest-ios:
55+
@curl -s https://cocoapods.org/pods/HyperTrack | grep -m 1 -o -E "HyperTrack <span>{{SEMVER_REGEX}}" | grep -o -E '{{SEMVER_REGEX}}' | head -n 1
56+
4257
open-docs: docs
4358
open docs/index.html
4459

60+
push-tag:
61+
#!/usr/bin/env sh
62+
set -euo pipefail
63+
if [ $(git symbolic-ref --short HEAD) = "master" ] ; then
64+
VERSION = $(just version)
65+
git tag $VERSION
66+
git push origin $VERSION
67+
else
68+
echo "You are not on master branch"
69+
fi
70+
4571
release publish="dry-run": build
4672
#!/usr/bin/env sh
4773
set -euo pipefail
@@ -68,5 +94,103 @@ release publish="dry-run": build
6894

6995
setup: get-dependencies
7096

97+
update-readme-android android_version:
98+
./scripts/update_file.sh README.md 'Android\%20SDK-.*-brightgreen.svg' 'Android%20SDK-{{android_version}}-brightgreen.svg'
99+
100+
update-readme-ios ios_version:
101+
./scripts/update_file.sh README.md 'iOS\%20SDK-.*-brightgreen.svg' 'iOS%20SDK-{{ios_version}}-brightgreen.svg'
102+
103+
update-sdk-latest wrapper_version commit="true" branch="true":
104+
#!/usr/bin/env sh
105+
set -euo pipefail
106+
LATEST_IOS=$(just latest-ios)
107+
LATEST_ANDROID=$(just latest-android)
108+
just update-sdk {{wrapper_version}} $LATEST_IOS $LATEST_ANDROID {{commit}} {{branch}}
109+
110+
update-sdk-android-latest wrapper_version commit="true" branch="true":
111+
#!/usr/bin/env sh
112+
set -euo pipefail
113+
LATEST_ANDROID=$(just latest-android)
114+
just update-sdk-android {{wrapper_version}} $LATEST_ANDROID {{commit}} {{branch}}
115+
116+
update-sdk-ios-latest wrapper_version commit="true" branch="true":
117+
#!/usr/bin/env sh
118+
set -euo pipefail
119+
LATEST_IOS=$(just latest-ios)
120+
just update-sdk-ios {{wrapper_version}} $LATEST_IOS {{commit}} {{branch}}
121+
122+
update-sdk wrapper_version ios_version android_version commit="true" branch="true":
123+
#!/usr/bin/env sh
124+
set -euo pipefail
125+
if [ "{{branch}}" = "true" ] ; then
126+
git checkout -b update-sdk-ios-{{ios_version}}-android-{{android_version}}
127+
fi
128+
just version
129+
echo "New version is {{wrapper_version}}"
130+
just update-wrapper-version-file {{wrapper_version}}
131+
./scripts/update_changelog.sh -w {{wrapper_version}} -i {{ios_version}} -a {{android_version}}
132+
echo "Updating HyperTrack SDK iOS to {{ios_version}}"
133+
just update-sdk-ios-version-file {{ios_version}}
134+
just update-readme-ios {{ios_version}}
135+
echo "Updating HyperTrack SDK Android to {{android_version}}"
136+
just update-sdk-android-version-file {{android_version}}
137+
just update-readme-android {{android_version}}
138+
just docs
139+
if [ "{{commit}}" = "true" ] ; then
140+
git add .
141+
git commit -m "Update HyperTrack SDK iOS to {{ios_version}} and Android to {{android_version}}"
142+
fi
143+
144+
update-sdk-android wrapper_version android_version commit="true" branch="true":
145+
#!/usr/bin/env sh
146+
set -euo pipefail
147+
if [ "{{branch}}" = "true" ] ; then
148+
git checkout -b update-sdk-android-{{android_version}}
149+
fi
150+
just version
151+
echo "Updating HyperTrack SDK Android to {{android_version}} on {{wrapper_version}}"
152+
just update-wrapper-version-file {{wrapper_version}}
153+
just update-sdk-android-version-file {{android_version}}
154+
just update-readme-android {{android_version}}
155+
./scripts/update_changelog.sh -w {{wrapper_version}} -a {{android_version}}
156+
just docs
157+
if [ "{{commit}}" = "true" ] ; then
158+
git add .
159+
git commit -m "Update HyperTrack SDK Android to {{android_version}}"
160+
fi
161+
162+
update-sdk-ios wrapper_version ios_version commit="true" branch="true":
163+
#!/usr/bin/env sh
164+
set -euo pipefail
165+
if [ "{{branch}}" = "true" ] ; then
166+
git checkout -b update-sdk-ios-{{ios_version}}
167+
fi
168+
just version
169+
echo "Updating HyperTrack SDK iOS to {{ios_version}} on {{wrapper_version}}"
170+
just update-wrapper-version-file {{wrapper_version}}
171+
just update-sdk-ios-version-file {{ios_version}}
172+
just update-readme-ios {{ios_version}}
173+
./scripts/update_changelog.sh -w {{wrapper_version}} -i {{ios_version}}
174+
just docs
175+
if [ "{{commit}}" = "true" ] ; then
176+
git add .
177+
git commit -m "Update HyperTrack SDK iOS to {{ios_version}}"
178+
fi
179+
180+
update-sdk-android-version-file android_version:
181+
./scripts/update_file.sh sdk/android/gradle.properties 'HyperTrackSdk_HyperTrackSDKVersion=.*' 'HyperTrackSdk_HyperTrackSDKVersion={{android_version}}'
182+
./scripts/update_file.sh plugin_android_location_services_google/android/gradle.properties 'PluginAndroidLocationServicesGoogle_HyperTrackSDKVersion=.*' 'PluginAndroidLocationServicesGoogle_HyperTrackSDKVersion={{android_version}}'
183+
./scripts/update_file.sh plugin_android_location_services_google_19_0_1/android/gradle.properties 'PluginAndroidLocationServicesGoogle1901_HyperTrackSDKVersion=.*' 'PluginAndroidLocationServicesGoogle1901_HyperTrackSDKVersion={{android_version}}'
184+
./scripts/update_file.sh plugin_android_push_service_firebase/android/gradle.properties 'PluginAndroidPushServiceFirebase_HyperTrackSDKVersion=.*' 'PluginAndroidPushServiceFirebase_HyperTrackSDKVersion={{android_version}}'
185+
186+
update-sdk-ios-version-file ios_version:
187+
./scripts/update_file.sh sdk/hypertrack-sdk-react-native.podspec "'HyperTrack', '.*'" "'HyperTrack', '{{ios_version}}'"
188+
189+
update-wrapper-version-file wrapper_version:
190+
./scripts/update_file.sh sdk/package.json '"version": ".*"' '"version": "{{wrapper_version}}"'
191+
./scripts/update_file.sh plugin_android_location_services_google/package.json '"version": ".*"' '"version": "{{wrapper_version}}"'
192+
./scripts/update_file.sh plugin_android_location_services_google_19_0_1/package.json '"version": ".*"' '"version": "{{wrapper_version}}"'
193+
./scripts/update_file.sh plugin_android_push_service_firebase/package.json '"version": ".*"' '"version": "{{wrapper_version}}"'
194+
71195
version:
72196
@cat sdk/package.json | grep version | head -n 1 | grep -o -E '{{SEMVER_REGEX}}'

scripts/update_changelog.sh

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#!/bin/bash
2+
3+
while [ "$#" -gt 0 ]; do
4+
case "$1" in
5+
-w)
6+
wrapper_version="$2"
7+
shift 2
8+
;;
9+
-i)
10+
ios_version="$2"
11+
shift 2
12+
;;
13+
-a)
14+
android_version="$2"
15+
shift 2
16+
;;
17+
*)
18+
echo "Usage: $0 [-w wrapper_version] [-i ios_version] [-a android_version]"
19+
exit 1
20+
;;
21+
esac
22+
done
23+
24+
changelog_file="CHANGELOG.md"
25+
26+
if [ ! -f "$changelog_file" ]; then
27+
echo "Error: $changelog_file not found."
28+
exit 1
29+
fi
30+
31+
if [ -z "$wrapper_version" ]; then
32+
echo "Error: wrapper_version is required."
33+
exit 1
34+
fi
35+
36+
date=$(date +%Y-%m-%d)
37+
38+
$(echo "[$wrapper_version]: https://github.com/hypertrack/sdk-react-native/releases/tag/$wrapper_version" >>$changelog_file)
39+
40+
sed -i '' -e "8 i\\
41+
" $changelog_file
42+
sed -i '' -e "8 i\\
43+
## [$wrapper_version] - $date" $changelog_file
44+
sed -i '' -e "9 i\\
45+
" $changelog_file
46+
sed -i '' -e "10 i\\
47+
### Changed" $changelog_file
48+
sed -i '' -e "11 i\\
49+
" $changelog_file
50+
51+
if [ -n "$android_version" ]; then
52+
sed -i '' -e "12 i\\
53+
- Updated HyperTrack SDK Android to $android_version" $changelog_file
54+
fi
55+
56+
if [ -n "$ios_version" ]; then
57+
sed -i '' -e "12 i\\
58+
- Updated HyperTrack SDK iOS to $ios_version" $changelog_file
59+
fi

scripts/update_file.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/bash
2+
3+
# Check if params are provided
4+
if [ $# -ne 3 ]; then
5+
echo "Usage: $0 <file> <source_text> <new_text>"
6+
exit 1
7+
fi
8+
9+
file="$1"
10+
source_text="$2"
11+
new_text="$3"
12+
13+
if [ ! -f "$file" ]; then
14+
echo "Error: $file not found."
15+
exit 1
16+
fi
17+
18+
cat $file | sed "s/$source_text/$new_text/" >tmp
19+
cat tmp >$file
20+
rm -f tmp
21+
22+
echo "Updated $source_text in $file to $new_text"

0 commit comments

Comments
 (0)