@@ -168,7 +168,7 @@ def get_files(dirs_and_files, file_extension, file_name=None,
168
168
PODSPEC_REPOSITORY = 'https://github.com/CocoaPods/Specs.git'
169
169
170
170
# List of Pods that we are interested in.
171
- PODS = (
171
+ PODS = [
172
172
'Firebase' ,
173
173
'FirebaseCore' ,
174
174
'FirebaseAnalytics' ,
@@ -183,9 +183,19 @@ def get_files(dirs_and_files, file_extension, file_name=None,
183
183
'FirebaseMessaging' ,
184
184
'FirebaseRemoteConfig' ,
185
185
'FirebaseStorage' ,
186
- 'Google-Mobile-Ads-SDK'
187
- )
186
+ ]
187
+
188
+ # List of GMA pods we are also interested in.
189
+ PODS_GMA = [
190
+ 'Google-Mobile-Ads-SDK' ,
191
+ 'GoogleUserMessagingPlatform'
192
+ ]
188
193
194
+ ANDROID_GMA_PACKAGES = [
195
+ 'firebase-ads' ,
196
+ 'play-services-ads' ,
197
+ 'user-messaging-platform' ,
198
+ ]
189
199
190
200
def get_pod_versions (specs_repo , pods = PODS , ignore_pods = None ,
191
201
allow_experimental = False ):
@@ -275,8 +285,14 @@ def get_latest_pod_versions(specs_repo=None, pods=PODS, ignore_pods=None,
275
285
# { 'PodnameA' : ['1.0.1', '2.0.4'], 'PodnameB': ['3.0.4', '1.0.2'] }
276
286
# Convert string version numbers to semantic version objects
277
287
# for easier comparison and get the latest version.
278
- latest_version = max ([packaging .version .parse (v )
279
- for v in all_versions [pod ]])
288
+ parsed_versions = []
289
+ for v in all_versions [pod ]:
290
+ try :
291
+ parsed_versions .append (packaging .version .parse (v ))
292
+ except :
293
+ # Sometimes version numbers don't parse; ignore them.
294
+ continue
295
+ latest_version = max (parsed_versions )
280
296
# Replace the list of versions with just the latest version
281
297
latest_versions [pod ] = latest_version .base_version
282
298
print ("Latest pod versions retreived from cocoapods specs repo: \n " )
@@ -695,7 +711,6 @@ def parse_cmdline_args():
695
711
# iOS options
696
712
parser .add_argument ('--skip_ios' , action = 'store_true' ,
697
713
help = 'Skip iOS pod version update completely.' )
698
- # TODO: remove default values when Ads SDK does not need to be pinned.
699
714
parser .add_argument ('--ignore_ios_pods' , nargs = '+' , default = (),
700
715
help = 'Ignore iOS pods which have any of the items specified in '
701
716
'this list as substrings.' )
@@ -709,11 +724,11 @@ def parse_cmdline_args():
709
724
# Android options
710
725
parser .add_argument ('--skip_android' , action = 'store_true' ,
711
726
help = 'Skip Android libraries version update completely.' )
712
- # TODO: remove default values when Ads SDK does not need to be pinned.
713
- parser .add_argument ('--ignore_android_packages' , nargs = '+' ,
714
- default = ('firebase-ads' ,),
727
+ parser .add_argument ('--ignore_android_packages' , nargs = '+' , default = (),
715
728
help = 'Ignore Android packages which have any of the items '
716
729
'specified in this list as substrings.' )
730
+ parser .add_argument ('--include_gma' , action = 'store_true' ,
731
+ help = 'Also update GMA dependencies' )
717
732
parser .add_argument ('--depfiles' , nargs = '+' ,
718
733
default = ('Android/firebase_dependencies.gradle' ,
719
734
'release_build_files/Android/firebase_dependencies.gradle' ),
@@ -758,7 +773,9 @@ def main():
758
773
file_name = 'readme' )
759
774
760
775
if not args .skip_ios :
761
- latest_pod_versions_map = get_latest_pod_versions (args .specs_repo , PODS ,
776
+ latest_pod_versions_map = get_latest_pod_versions (
777
+ args .specs_repo ,
778
+ (PODS + PODS_GMA ) if args .include_gma else PODS ,
762
779
set (args .ignore_ios_pods ), args .allow_experimental )
763
780
pod_files = get_files (args .podfiles , file_extension = '' , file_name = 'Podfile' ,
764
781
ignore_directories = set (args .ignore_directories ))
@@ -769,8 +786,11 @@ def main():
769
786
modify_readme_file_pods (readme_file , latest_pod_versions_map , args .dryrun )
770
787
771
788
if not args .skip_android :
789
+ ignore_android_packages = set (args .ignore_android_packages )
790
+ if not args .include_gma :
791
+ ignore_android_packages .update (ANDROID_GMA_PACKAGES )
772
792
latest_android_versions_map = get_latest_maven_versions (
773
- set ( args . ignore_android_packages ) , args .allow_experimental )
793
+ ignore_android_packages , args .allow_experimental )
774
794
dep_files = get_files (args .depfiles , file_extension = '.gradle' ,
775
795
file_name = 'firebase_dependencies.gradle' ,
776
796
ignore_directories = set (args .ignore_directories ))
0 commit comments