@@ -168,7 +168,7 @@ def get_files(dirs_and_files, file_extension, file_name=None,
168168PODSPEC_REPOSITORY = 'https://github.com/CocoaPods/Specs.git'
169169
170170# List of Pods that we are interested in.
171- PODS = (
171+ PODS = [
172172 'Firebase' ,
173173 'FirebaseCore' ,
174174 'FirebaseAnalytics' ,
@@ -183,9 +183,19 @@ def get_files(dirs_and_files, file_extension, file_name=None,
183183 'FirebaseMessaging' ,
184184 'FirebaseRemoteConfig' ,
185185 '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+ ]
188193
194+ ANDROID_GMA_PACKAGES = [
195+ 'firebase-ads' ,
196+ 'play-services-ads' ,
197+ 'user-messaging-platform' ,
198+ ]
189199
190200def get_pod_versions (specs_repo , pods = PODS , ignore_pods = None ,
191201 allow_experimental = False ):
@@ -275,8 +285,14 @@ def get_latest_pod_versions(specs_repo=None, pods=PODS, ignore_pods=None,
275285 # { 'PodnameA' : ['1.0.1', '2.0.4'], 'PodnameB': ['3.0.4', '1.0.2'] }
276286 # Convert string version numbers to semantic version objects
277287 # 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 )
280296 # Replace the list of versions with just the latest version
281297 latest_versions [pod ] = latest_version .base_version
282298 print ("Latest pod versions retreived from cocoapods specs repo: \n " )
@@ -695,7 +711,6 @@ def parse_cmdline_args():
695711 # iOS options
696712 parser .add_argument ('--skip_ios' , action = 'store_true' ,
697713 help = 'Skip iOS pod version update completely.' )
698- # TODO: remove default values when Ads SDK does not need to be pinned.
699714 parser .add_argument ('--ignore_ios_pods' , nargs = '+' , default = (),
700715 help = 'Ignore iOS pods which have any of the items specified in '
701716 'this list as substrings.' )
@@ -709,11 +724,11 @@ def parse_cmdline_args():
709724 # Android options
710725 parser .add_argument ('--skip_android' , action = 'store_true' ,
711726 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 = (),
715728 help = 'Ignore Android packages which have any of the items '
716729 'specified in this list as substrings.' )
730+ parser .add_argument ('--include_gma' , action = 'store_true' ,
731+ help = 'Also update GMA dependencies' )
717732 parser .add_argument ('--depfiles' , nargs = '+' ,
718733 default = ('Android/firebase_dependencies.gradle' ,
719734 'release_build_files/Android/firebase_dependencies.gradle' ),
@@ -758,7 +773,9 @@ def main():
758773 file_name = 'readme' )
759774
760775 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 ,
762779 set (args .ignore_ios_pods ), args .allow_experimental )
763780 pod_files = get_files (args .podfiles , file_extension = '' , file_name = 'Podfile' ,
764781 ignore_directories = set (args .ignore_directories ))
@@ -769,8 +786,11 @@ def main():
769786 modify_readme_file_pods (readme_file , latest_pod_versions_map , args .dryrun )
770787
771788 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 )
772792 latest_android_versions_map = get_latest_maven_versions (
773- set ( args . ignore_android_packages ) , args .allow_experimental )
793+ ignore_android_packages , args .allow_experimental )
774794 dep_files = get_files (args .depfiles , file_extension = '.gradle' ,
775795 file_name = 'firebase_dependencies.gradle' ,
776796 ignore_directories = set (args .ignore_directories ))
0 commit comments