fastlane_hotfix 2.165.1 → 2.187.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (415) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +106 -86
  4. data/cert/lib/cert/commands_generator.rb +2 -1
  5. data/cert/lib/cert/options.rb +6 -5
  6. data/cert/lib/cert/runner.rb +8 -8
  7. data/deliver/lib/assets/summary.html.erb +10 -10
  8. data/deliver/lib/deliver/app_screenshot.rb +17 -11
  9. data/deliver/lib/deliver/app_screenshot_validator.rb +108 -0
  10. data/deliver/lib/deliver/commands_generator.rb +4 -3
  11. data/deliver/lib/deliver/detect_values.rb +5 -3
  12. data/deliver/lib/deliver/download_screenshots.rb +2 -3
  13. data/deliver/lib/deliver/html_generator.rb +2 -2
  14. data/deliver/lib/deliver/languages.rb +1 -1
  15. data/deliver/lib/deliver/loader.rb +123 -21
  16. data/deliver/lib/deliver/module.rb +6 -0
  17. data/deliver/lib/deliver/options.rb +41 -55
  18. data/deliver/lib/deliver/runner.rb +19 -14
  19. data/deliver/lib/deliver/setup.rb +9 -5
  20. data/deliver/lib/deliver/submit_for_review.rb +4 -4
  21. data/deliver/lib/deliver/upload_metadata.rb +32 -21
  22. data/deliver/lib/deliver/upload_price_tier.rb +1 -1
  23. data/deliver/lib/deliver/upload_screenshots.rb +14 -76
  24. data/fastlane/lib/fastlane/actions/actions_helper.rb +3 -3
  25. data/fastlane/lib/fastlane/actions/adb.rb +2 -5
  26. data/fastlane/lib/fastlane/actions/adb_devices.rb +0 -1
  27. data/fastlane/lib/fastlane/actions/add_git_tag.rb +22 -6
  28. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +17 -17
  29. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +21 -7
  30. data/fastlane/lib/fastlane/actions/appaloosa.rb +7 -2
  31. data/fastlane/lib/fastlane/actions/appetize.rb +13 -8
  32. data/fastlane/lib/fastlane/actions/appetize_viewing_url_generator.rb +0 -11
  33. data/fastlane/lib/fastlane/actions/appium.rb +40 -65
  34. data/fastlane/lib/fastlane/actions/appledoc.rb +46 -46
  35. data/fastlane/lib/fastlane/actions/apteligent.rb +3 -2
  36. data/fastlane/lib/fastlane/actions/artifactory.rb +41 -9
  37. data/fastlane/lib/fastlane/actions/automatic_code_signing.rb +7 -13
  38. data/fastlane/lib/fastlane/actions/backup_file.rb +1 -1
  39. data/fastlane/lib/fastlane/actions/backup_xcarchive.rb +3 -3
  40. data/fastlane/lib/fastlane/actions/badge.rb +9 -13
  41. data/fastlane/lib/fastlane/actions/build_and_upload_to_appetize.rb +11 -5
  42. data/fastlane/lib/fastlane/actions/build_app.rb +7 -1
  43. data/fastlane/lib/fastlane/actions/bundle_install.rb +8 -10
  44. data/fastlane/lib/fastlane/actions/carthage.rb +22 -14
  45. data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +8 -17
  46. data/fastlane/lib/fastlane/actions/chatwork.rb +3 -2
  47. data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +9 -1
  48. data/fastlane/lib/fastlane/actions/clean_build_artifacts.rb +0 -1
  49. data/fastlane/lib/fastlane/actions/clean_cocoapods_cache.rb +0 -1
  50. data/fastlane/lib/fastlane/actions/clipboard.rb +3 -6
  51. data/fastlane/lib/fastlane/actions/cloc.rb +9 -13
  52. data/fastlane/lib/fastlane/actions/cocoapods.rb +23 -15
  53. data/fastlane/lib/fastlane/actions/commit_github_file.rb +12 -4
  54. data/fastlane/lib/fastlane/actions/commit_version_bump.rb +6 -7
  55. data/fastlane/lib/fastlane/actions/copy_artifacts.rb +3 -4
  56. data/fastlane/lib/fastlane/actions/crashlytics.rb +7 -11
  57. data/fastlane/lib/fastlane/actions/create_app_on_managed_play_store.rb +70 -76
  58. data/fastlane/lib/fastlane/actions/create_keychain.rb +13 -11
  59. data/fastlane/lib/fastlane/actions/create_pull_request.rb +15 -9
  60. data/fastlane/lib/fastlane/actions/create_xcframework.rb +123 -0
  61. data/fastlane/lib/fastlane/actions/danger.rb +13 -12
  62. data/fastlane/lib/fastlane/actions/deploygate.rb +1 -2
  63. data/fastlane/lib/fastlane/actions/docs/build_app.md +1 -1
  64. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +27 -28
  65. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +7 -3
  66. data/fastlane/lib/fastlane/actions/docs/create_app_online.md +171 -67
  67. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +20 -3
  68. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +9 -3
  69. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +39 -16
  70. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +2 -1
  71. data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +15 -5
  72. data/fastlane/lib/fastlane/actions/download_app_privacy_details_from_app_store.rb +142 -0
  73. data/fastlane/lib/fastlane/actions/download_dsyms.rb +8 -20
  74. data/fastlane/lib/fastlane/actions/dsym_zip.rb +1 -1
  75. data/fastlane/lib/fastlane/actions/ensure_env_vars.rb +2 -6
  76. data/fastlane/lib/fastlane/actions/ensure_git_branch.rb +0 -1
  77. data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +3 -4
  78. data/fastlane/lib/fastlane/actions/ensure_no_debug_code.rb +3 -5
  79. data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +1 -2
  80. data/fastlane/lib/fastlane/actions/environment_variable.rb +13 -21
  81. data/fastlane/lib/fastlane/actions/erb.rb +2 -5
  82. data/fastlane/lib/fastlane/actions/get_build_number_repository.rb +1 -1
  83. data/fastlane/lib/fastlane/actions/get_certificates.rb +5 -1
  84. data/fastlane/lib/fastlane/actions/get_github_release.rb +11 -1
  85. data/fastlane/lib/fastlane/actions/get_ipa_info_plist_value.rb +0 -1
  86. data/fastlane/lib/fastlane/actions/get_managed_play_store_publishing_rights.rb +32 -35
  87. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +9 -1
  88. data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
  89. data/fastlane/lib/fastlane/actions/get_version_number.rb +17 -10
  90. data/fastlane/lib/fastlane/actions/git_add.rb +5 -10
  91. data/fastlane/lib/fastlane/actions/git_branch.rb +4 -10
  92. data/fastlane/lib/fastlane/actions/git_commit.rb +12 -10
  93. data/fastlane/lib/fastlane/actions/git_pull.rb +4 -10
  94. data/fastlane/lib/fastlane/actions/git_remote_branch.rb +57 -0
  95. data/fastlane/lib/fastlane/actions/git_submodule_update.rb +16 -8
  96. data/fastlane/lib/fastlane/actions/git_tag_exists.rb +4 -0
  97. data/fastlane/lib/fastlane/actions/github_api.rb +17 -8
  98. data/fastlane/lib/fastlane/actions/gradle.rb +12 -20
  99. data/fastlane/lib/fastlane/actions/hg_commit_version_bump.rb +1 -1
  100. data/fastlane/lib/fastlane/actions/hg_push.rb +1 -1
  101. data/fastlane/lib/fastlane/actions/hipchat.rb +6 -6
  102. data/fastlane/lib/fastlane/actions/hockey.rb +5 -12
  103. data/fastlane/lib/fastlane/actions/ifttt.rb +3 -6
  104. data/fastlane/lib/fastlane/actions/import_from_git.rb +7 -9
  105. data/fastlane/lib/fastlane/actions/increment_build_number.rb +8 -2
  106. data/fastlane/lib/fastlane/actions/install_on_device.rb +3 -6
  107. data/fastlane/lib/fastlane/actions/install_provisioning_profile.rb +4 -0
  108. data/fastlane/lib/fastlane/actions/installr.rb +22 -25
  109. data/fastlane/lib/fastlane/actions/ipa.rb +2 -2
  110. data/fastlane/lib/fastlane/actions/jazzy.rb +11 -8
  111. data/fastlane/lib/fastlane/actions/jira.rb +61 -14
  112. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +6 -6
  113. data/fastlane/lib/fastlane/actions/lcov.rb +0 -4
  114. data/fastlane/lib/fastlane/actions/mailgun.rb +21 -27
  115. data/fastlane/lib/fastlane/actions/make_changelog_from_jenkins.rb +1 -1
  116. data/fastlane/lib/fastlane/actions/match_nuke.rb +59 -0
  117. data/fastlane/lib/fastlane/actions/modify_services.rb +59 -24
  118. data/fastlane/lib/fastlane/actions/nexus_upload.rb +3 -2
  119. data/fastlane/lib/fastlane/actions/notarize.rb +98 -54
  120. data/fastlane/lib/fastlane/actions/notification.rb +1 -1
  121. data/fastlane/lib/fastlane/actions/number_of_commits.rb +1 -1
  122. data/fastlane/lib/fastlane/actions/oclint.rb +15 -14
  123. data/fastlane/lib/fastlane/actions/onesignal.rb +13 -3
  124. data/fastlane/lib/fastlane/actions/pod_push.rb +9 -2
  125. data/fastlane/lib/fastlane/actions/podio_item.rb +0 -7
  126. data/fastlane/lib/fastlane/actions/prompt.rb +3 -4
  127. data/fastlane/lib/fastlane/actions/push_git_tags.rb +1 -1
  128. data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +14 -3
  129. data/fastlane/lib/fastlane/actions/puts.rb +1 -2
  130. data/fastlane/lib/fastlane/actions/register_device.rb +10 -13
  131. data/fastlane/lib/fastlane/actions/register_devices.rb +11 -14
  132. data/fastlane/lib/fastlane/actions/reset_git_repo.rb +5 -8
  133. data/fastlane/lib/fastlane/actions/reset_simulator_contents.rb +0 -2
  134. data/fastlane/lib/fastlane/actions/resign.rb +2 -9
  135. data/fastlane/lib/fastlane/actions/restore_file.rb +1 -1
  136. data/fastlane/lib/fastlane/actions/rsync.rb +3 -6
  137. data/fastlane/lib/fastlane/actions/run_tests.rb +1 -1
  138. data/fastlane/lib/fastlane/actions/s3.rb +1 -1
  139. data/fastlane/lib/fastlane/actions/say.rb +2 -3
  140. data/fastlane/lib/fastlane/actions/scp.rb +4 -10
  141. data/fastlane/lib/fastlane/actions/set_build_number_repository.rb +1 -1
  142. data/fastlane/lib/fastlane/actions/set_changelog.rb +10 -13
  143. data/fastlane/lib/fastlane/actions/set_github_release.rb +23 -16
  144. data/fastlane/lib/fastlane/actions/set_info_plist_value.rb +1 -1
  145. data/fastlane/lib/fastlane/actions/set_pod_key.rb +3 -4
  146. data/fastlane/lib/fastlane/actions/setup_ci.rb +1 -2
  147. data/fastlane/lib/fastlane/actions/setup_circle_ci.rb +1 -1
  148. data/fastlane/lib/fastlane/actions/setup_jenkins.rb +7 -12
  149. data/fastlane/lib/fastlane/actions/setup_travis.rb +1 -1
  150. data/fastlane/lib/fastlane/actions/sh.rb +2 -4
  151. data/fastlane/lib/fastlane/actions/slack.rb +164 -145
  152. data/fastlane/lib/fastlane/actions/slather.rb +5 -21
  153. data/fastlane/lib/fastlane/actions/sonar.rb +12 -19
  154. data/fastlane/lib/fastlane/actions/sourcedocs.rb +128 -0
  155. data/fastlane/lib/fastlane/actions/spaceship_logs.rb +1 -1
  156. data/fastlane/lib/fastlane/actions/splunkmint.rb +2 -2
  157. data/fastlane/lib/fastlane/actions/spm.rb +8 -2
  158. data/fastlane/lib/fastlane/actions/ssh.rb +5 -10
  159. data/fastlane/lib/fastlane/actions/swiftlint.rb +21 -19
  160. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +6 -1
  161. data/fastlane/lib/fastlane/actions/testfairy.rb +0 -1
  162. data/fastlane/lib/fastlane/actions/tryouts.rb +2 -3
  163. data/fastlane/lib/fastlane/actions/twitter.rb +0 -5
  164. data/fastlane/lib/fastlane/actions/unlock_keychain.rb +3 -3
  165. data/fastlane/lib/fastlane/actions/update_app_group_identifiers.rb +1 -4
  166. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +8 -15
  167. data/fastlane/lib/fastlane/actions/update_fastlane.rb +31 -10
  168. data/fastlane/lib/fastlane/actions/update_icloud_container_identifiers.rb +1 -4
  169. data/fastlane/lib/fastlane/actions/update_info_plist.rb +1 -1
  170. data/fastlane/lib/fastlane/actions/update_keychain_access_groups.rb +1 -4
  171. data/fastlane/lib/fastlane/actions/update_plist.rb +1 -1
  172. data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +3 -4
  173. data/fastlane/lib/fastlane/actions/update_urban_airship_configuration.rb +0 -1
  174. data/fastlane/lib/fastlane/actions/update_url_schemes.rb +15 -26
  175. data/fastlane/lib/fastlane/actions/upload_app_privacy_details_to_app_store.rb +290 -0
  176. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +8 -7
  177. data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +3 -10
  178. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +8 -4
  179. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +7 -2
  180. data/fastlane/lib/fastlane/actions/validate_play_store_json_key.rb +40 -44
  181. data/fastlane/lib/fastlane/actions/version_get_podspec.rb +1 -2
  182. data/fastlane/lib/fastlane/actions/xcode_install.rb +8 -5
  183. data/fastlane/lib/fastlane/actions/xcode_server_get_assets.rb +3 -3
  184. data/fastlane/lib/fastlane/actions/xcodebuild.rb +5 -5
  185. data/fastlane/lib/fastlane/cli_tools_distributor.rb +6 -3
  186. data/fastlane/lib/fastlane/commands_generator.rb +2 -1
  187. data/fastlane/lib/fastlane/documentation/actions_list.rb +2 -2
  188. data/fastlane/lib/fastlane/documentation/docs_generator.rb +1 -1
  189. data/fastlane/lib/fastlane/documentation/markdown_docs_generator.rb +1 -1
  190. data/fastlane/lib/fastlane/environment_printer.rb +1 -0
  191. data/fastlane/lib/fastlane/erb_template_helper.rb +7 -1
  192. data/fastlane/lib/fastlane/fast_file.rb +19 -7
  193. data/fastlane/lib/fastlane/fastlane_require.rb +7 -1
  194. data/fastlane/lib/fastlane/features.rb +1 -1
  195. data/fastlane/lib/fastlane/helper/adb_helper.rb +1 -1
  196. data/fastlane/lib/fastlane/helper/crashlytics_helper.rb +4 -4
  197. data/fastlane/lib/fastlane/helper/gem_helper.rb +2 -2
  198. data/fastlane/lib/fastlane/helper/git_helper.rb +34 -5
  199. data/fastlane/lib/fastlane/lane_manager.rb +3 -2
  200. data/fastlane/lib/fastlane/notification/slack.rb +56 -0
  201. data/fastlane/lib/fastlane/plugins/plugin_fetcher.rb +1 -2
  202. data/fastlane/lib/fastlane/plugins/plugin_info.rb +2 -2
  203. data/fastlane/lib/fastlane/plugins/plugin_info_collector.rb +1 -2
  204. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +2 -3
  205. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +7 -6
  206. data/fastlane/lib/fastlane/plugins/template/.circleci/config.yml +1 -1
  207. data/fastlane/lib/fastlane/plugins/template/.github/workflows/test.yml +1 -1
  208. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +31 -35
  209. data/fastlane/lib/fastlane/plugins/template/spec/spec_helper.rb.erb +1 -1
  210. data/fastlane/lib/fastlane/setup/setup.rb +23 -10
  211. data/fastlane/lib/fastlane/setup/setup_ios.rb +3 -3
  212. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +3 -0
  213. data/fastlane/lib/fastlane/swift_fastlane_function.rb +44 -16
  214. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +2 -0
  215. data/fastlane/lib/fastlane/version.rb +2 -2
  216. data/fastlane/swift/Actions.swift +1 -1
  217. data/fastlane/swift/Appfile.swift +1 -1
  218. data/fastlane/swift/ArgumentProcessor.swift +1 -1
  219. data/fastlane/swift/ControlCommand.swift +1 -1
  220. data/fastlane/swift/Deliverfile.swift +2 -2
  221. data/fastlane/swift/DeliverfileProtocol.swift +23 -23
  222. data/fastlane/swift/Fastfile.swift +1 -1
  223. data/fastlane/swift/Fastlane.swift +7965 -4213
  224. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +4 -0
  225. data/fastlane/swift/Gymfile.swift +2 -2
  226. data/fastlane/swift/GymfileProtocol.swift +15 -3
  227. data/fastlane/swift/LaneFileProtocol.swift +12 -6
  228. data/fastlane/swift/MainProcess.swift +3 -1
  229. data/fastlane/swift/Matchfile.swift +2 -2
  230. data/fastlane/swift/MatchfileProtocol.swift +4 -4
  231. data/fastlane/swift/OptionalConfigValue.swift +101 -0
  232. data/fastlane/swift/Plugins.swift +1 -1
  233. data/fastlane/swift/Precheckfile.swift +2 -2
  234. data/fastlane/swift/PrecheckfileProtocol.swift +8 -4
  235. data/fastlane/swift/RubyCommand.swift +2 -2
  236. data/fastlane/swift/RubyCommandable.swift +1 -1
  237. data/fastlane/swift/Runner.swift +3 -3
  238. data/fastlane/swift/RunnerArgument.swift +1 -1
  239. data/fastlane/swift/Scanfile.swift +2 -2
  240. data/fastlane/swift/ScanfileProtocol.swift +34 -2
  241. data/fastlane/swift/Screengrabfile.swift +2 -2
  242. data/fastlane/swift/ScreengrabfileProtocol.swift +5 -5
  243. data/fastlane/swift/Snapshotfile.swift +2 -2
  244. data/fastlane/swift/SnapshotfileProtocol.swift +19 -3
  245. data/fastlane/swift/SocketClient.swift +4 -3
  246. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  247. data/fastlane/swift/SocketResponse.swift +5 -3
  248. data/fastlane/swift/formatting/Brewfile.lock.json +24 -16
  249. data/fastlane/swift/main.swift +1 -1
  250. data/fastlane/swift/upgrade_manifest.json +1 -1
  251. data/fastlane_core/lib/fastlane_core.rb +22 -20
  252. data/fastlane_core/lib/fastlane_core/build_watcher.rb +89 -12
  253. data/fastlane_core/lib/fastlane_core/cert_checker.rb +12 -7
  254. data/fastlane_core/lib/fastlane_core/clipboard.rb +20 -0
  255. data/fastlane_core/lib/fastlane_core/command_executor.rb +3 -9
  256. data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +6 -1
  257. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +41 -3
  258. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +14 -8
  259. data/fastlane_core/lib/fastlane_core/device_manager.rb +1 -1
  260. data/fastlane_core/lib/fastlane_core/helper.rb +78 -14
  261. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +41 -16
  262. data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +3 -2
  263. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +20 -15
  264. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -1
  265. data/fastlane_core/lib/fastlane_core/languages.rb +2 -2
  266. data/fastlane_core/lib/fastlane_core/pkg_upload_package_builder.rb +3 -2
  267. data/fastlane_core/lib/fastlane_core/print_table.rb +5 -3
  268. data/fastlane_core/lib/fastlane_core/project.rb +48 -28
  269. data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +3 -1
  270. data/{deliver/lib/deliver → fastlane_core/lib/fastlane_core}/queue_worker.rb +4 -4
  271. data/fastlane_core/lib/fastlane_core/swag.rb +1 -1
  272. data/fastlane_core/lib/fastlane_core/ui/disable_colors.rb +8 -0
  273. data/fastlane_core/lib/fastlane_core/ui/help.erb +35 -0
  274. data/fastlane_core/lib/fastlane_core/ui/help_formatter.rb +16 -0
  275. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +16 -2
  276. data/fastlane_core/lib/fastlane_core/ui/interface.rb +1 -1
  277. data/fastlane_core/lib/fastlane_core/update_checker/update_checker.rb +2 -2
  278. data/frameit/lib/frameit/commands_generator.rb +2 -1
  279. data/frameit/lib/frameit/config_parser.rb +2 -2
  280. data/frameit/lib/frameit/device_types.rb +7 -1
  281. data/frameit/lib/frameit/frame_downloader.rb +2 -1
  282. data/gym/lib/gym/code_signing_mapping.rb +3 -3
  283. data/gym/lib/gym/commands_generator.rb +2 -1
  284. data/gym/lib/gym/error_handler.rb +8 -0
  285. data/gym/lib/gym/generators/build_command_generator.rb +3 -0
  286. data/gym/lib/gym/generators/package_command_generator.rb +4 -0
  287. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +21 -15
  288. data/gym/lib/gym/options.rb +19 -3
  289. data/gym/lib/gym/runner.rb +15 -4
  290. data/match/lib/match/change_password.rb +3 -3
  291. data/match/lib/match/commands_generator.rb +2 -1
  292. data/match/lib/match/encryption/interface.rb +1 -1
  293. data/match/lib/match/encryption/openssl.rb +5 -3
  294. data/match/lib/match/importer.rb +9 -10
  295. data/match/lib/match/migrate.rb +2 -3
  296. data/match/lib/match/module.rb +2 -1
  297. data/match/lib/match/nuke.rb +19 -15
  298. data/match/lib/match/options.rb +4 -3
  299. data/match/lib/match/runner.rb +3 -4
  300. data/match/lib/match/spaceship_ensure.rb +3 -0
  301. data/match/lib/match/storage/git_storage.rb +14 -10
  302. data/match/lib/match/storage/google_cloud_storage.rb +2 -2
  303. data/match/lib/match/storage/s3_storage.rb +2 -2
  304. data/pem/lib/pem/commands_generator.rb +2 -1
  305. data/pilot/lib/pilot.rb +0 -1
  306. data/pilot/lib/pilot/build_manager.rb +41 -15
  307. data/pilot/lib/pilot/commands_generator.rb +2 -1
  308. data/pilot/lib/pilot/manager.rb +11 -8
  309. data/pilot/lib/pilot/options.rb +18 -9
  310. data/pilot/lib/pilot/tester_exporter.rb +0 -1
  311. data/pilot/lib/pilot/tester_manager.rb +0 -1
  312. data/precheck/lib/precheck/commands_generator.rb +2 -1
  313. data/precheck/lib/precheck/options.rb +9 -3
  314. data/precheck/lib/precheck/rule_processor.rb +1 -1
  315. data/precheck/lib/precheck/runner.rb +14 -9
  316. data/produce/lib/produce/commands_generator.rb +101 -28
  317. data/produce/lib/produce/developer_center.rb +42 -4
  318. data/produce/lib/produce/options.rb +1 -1
  319. data/produce/lib/produce/service.rb +270 -179
  320. data/scan/lib/scan/commands_generator.rb +2 -1
  321. data/scan/lib/scan/detect_values.rb +7 -2
  322. data/scan/lib/scan/module.rb +4 -0
  323. data/scan/lib/scan/options.rb +46 -1
  324. data/scan/lib/scan/runner.rb +88 -3
  325. data/scan/lib/scan/slack_poster.rb +4 -1
  326. data/scan/lib/scan/test_command_generator.rb +13 -8
  327. data/screengrab/lib/screengrab/android_environment.rb +5 -53
  328. data/screengrab/lib/screengrab/commands_generator.rb +2 -1
  329. data/screengrab/lib/screengrab/dependency_checker.rb +0 -20
  330. data/screengrab/lib/screengrab/options.rb +5 -2
  331. data/screengrab/lib/screengrab/runner.rb +111 -108
  332. data/sigh/lib/assets/resign.sh +81 -61
  333. data/sigh/lib/sigh/commands_generator.rb +2 -1
  334. data/sigh/lib/sigh/download_all.rb +4 -8
  335. data/sigh/lib/sigh/options.rb +3 -2
  336. data/sigh/lib/sigh/runner.rb +9 -9
  337. data/snapshot/lib/assets/SnapfileTemplate +3 -2
  338. data/snapshot/lib/assets/SnapfileTemplate.swift +2 -1
  339. data/snapshot/lib/assets/SnapshotHelper.swift +20 -12
  340. data/snapshot/lib/snapshot/commands_generator.rb +3 -1
  341. data/snapshot/lib/snapshot/options.rb +22 -2
  342. data/snapshot/lib/snapshot/reports_generator.rb +7 -1
  343. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
  344. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +1 -1
  345. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +10 -5
  346. data/snapshot/lib/snapshot/test_command_generator.rb +18 -4
  347. data/snapshot/lib/snapshot/test_command_generator_base.rb +3 -1
  348. data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +1 -1
  349. data/snapshot/lib/snapshot/update.rb +1 -1
  350. data/spaceship/README.md +4 -14
  351. data/spaceship/lib/spaceship/base.rb +2 -2
  352. data/spaceship/lib/spaceship/client.rb +47 -29
  353. data/spaceship/lib/spaceship/commands_generator.rb +4 -2
  354. data/spaceship/lib/spaceship/connect_api.rb +6 -0
  355. data/spaceship/lib/spaceship/connect_api/api_client.rb +67 -9
  356. data/spaceship/lib/spaceship/connect_api/model.rb +1 -1
  357. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +39 -6
  358. data/spaceship/lib/spaceship/connect_api/models/app.rb +95 -55
  359. data/spaceship/lib/spaceship/connect_api/models/app_data_usage.rb +59 -0
  360. data/spaceship/lib/spaceship/connect_api/models/app_data_usage_category.rb +65 -0
  361. data/spaceship/lib/spaceship/connect_api/models/app_data_usage_data_protection.rb +27 -0
  362. data/spaceship/lib/spaceship/connect_api/models/app_data_usage_grouping.rb +18 -0
  363. data/spaceship/lib/spaceship/connect_api/models/app_data_usage_purposes.rb +37 -0
  364. data/spaceship/lib/spaceship/connect_api/models/app_data_usages_publish_state.rb +36 -0
  365. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +26 -10
  366. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +8 -4
  367. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +15 -11
  368. data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +18 -9
  369. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +10 -8
  370. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +20 -11
  371. data/spaceship/lib/spaceship/connect_api/models/app_store_review_attachment.rb +7 -5
  372. data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +6 -4
  373. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +62 -38
  374. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +27 -14
  375. data/spaceship/lib/spaceship/connect_api/models/app_store_version_submission.rb +3 -2
  376. data/spaceship/lib/spaceship/connect_api/models/beta_app_review_submission.rb +3 -2
  377. data/spaceship/lib/spaceship/connect_api/models/beta_feedback.rb +6 -4
  378. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +29 -3
  379. data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +15 -9
  380. data/spaceship/lib/spaceship/connect_api/models/build.rb +34 -17
  381. data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +4 -0
  382. data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +3 -2
  383. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +41 -6
  384. data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +86 -21
  385. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +12 -8
  386. data/spaceship/lib/spaceship/connect_api/models/device.rb +36 -4
  387. data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +6 -4
  388. data/spaceship/lib/spaceship/connect_api/models/profile.rb +18 -8
  389. data/spaceship/lib/spaceship/connect_api/models/reset_ratings_request.rb +3 -2
  390. data/spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb +9 -6
  391. data/spaceship/lib/spaceship/connect_api/models/territory.rb +3 -2
  392. data/spaceship/lib/spaceship/connect_api/models/user.rb +6 -4
  393. data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +22 -6
  394. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +99 -2
  395. data/spaceship/lib/spaceship/connect_api/response.rb +3 -1
  396. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +50 -0
  397. data/spaceship/lib/spaceship/connect_api/token.rb +15 -3
  398. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +122 -2
  399. data/spaceship/lib/spaceship/errors.rb +19 -0
  400. data/spaceship/lib/spaceship/playground.rb +2 -2
  401. data/spaceship/lib/spaceship/spaceauth_runner.rb +38 -15
  402. data/spaceship/lib/spaceship/tunes/iap_detail.rb +1 -1
  403. data/spaceship/lib/spaceship/tunes/members.rb +1 -1
  404. data/spaceship/lib/spaceship/tunes/tunes_client.rb +4 -4
  405. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +59 -33
  406. data/spaceship/lib/spaceship/ui.rb +2 -2
  407. data/spaceship/lib/spaceship/upgrade_2fa_later_client.rb +91 -0
  408. data/supply/lib/supply.rb +1 -1
  409. data/supply/lib/supply/client.rb +5 -3
  410. data/supply/lib/supply/commands_generator.rb +2 -1
  411. data/supply/lib/supply/options.rb +3 -3
  412. data/supply/lib/supply/uploader.rb +6 -4
  413. metadata +125 -93
  414. data/pilot/lib/pilot/features.rb +0 -0
  415. data/pilot/lib/pilot/tester_util.rb +0 -0
@@ -0,0 +1,123 @@
1
+ module Fastlane
2
+ module Actions
3
+ module SharedValues
4
+ XCFRAMEWORK_PATH ||= :XCFRAMEWORK_PATH
5
+ end
6
+
7
+ class CreateXcframeworkAction < Action
8
+ def self.run(params)
9
+ UI.user_error!("Please provide either :frameworks or :libraries to be packaged into the xcframework") unless params[:frameworks] || params[:libraries]
10
+
11
+ create_command = ['xcodebuild', '-create-xcframework']
12
+ create_command << params[:frameworks].map { |framework| ['-framework', "\"#{framework}\""] }.flatten if params[:frameworks]
13
+ create_command << params[:libraries].map { |library, headers| ['-library', "\"#{library}\""] + (headers.empty? ? [] : ['-headers', "\"#{headers}\""]) } if params[:libraries]
14
+ create_command << ['-output', "\"#{params[:output]}\""]
15
+ create_command << ['-allow-internal-distribution'] if params[:allow_internal_distribution]
16
+
17
+ if File.directory?(params[:output])
18
+ UI.message("Deleting existing: #{params[:output]}")
19
+ FileUtils.remove_dir(params[:output])
20
+ end
21
+
22
+ Actions.lane_context[SharedValues::XCFRAMEWORK_PATH] = params[:output]
23
+
24
+ sh(create_command)
25
+ end
26
+
27
+ #####################################################
28
+ # @!group Documentation
29
+ #####################################################
30
+
31
+ def self.description
32
+ "Package multiple build configs of a library/framework into a single xcframework"
33
+ end
34
+
35
+ def self.details
36
+ <<~DETAILS
37
+ Utility for packaging multiple build configurations of a given library
38
+ or framework into a single xcframework.
39
+
40
+ If you want to package several frameworks just provide an array containing
41
+ the list of frameworks to be packaged using the :frameworks parameter.
42
+
43
+ If you want to package several libraries with their corresponding headers
44
+ provide a hash containing the library as the key and the directory containing
45
+ its headers as the value (or an empty string if there are no headers associated
46
+ with the provided library).
47
+
48
+ Finally specify the location of the xcframework to be generated using the :output
49
+ parameter.
50
+ DETAILS
51
+ end
52
+
53
+ def self.available_options
54
+ [
55
+ FastlaneCore::ConfigItem.new(key: :frameworks,
56
+ env_name: "FL_CREATE_XCFRAMEWORK_FRAMEWORKS",
57
+ description: "Frameworks to add to the target xcframework",
58
+ type: Array,
59
+ optional: true,
60
+ conflicting_options: [:libraries],
61
+ verify_block: proc do |value|
62
+ value.each do |framework|
63
+ UI.user_error!("#{framework} doesn't end with '.framework'. Is this really a framework?") unless framework.end_with?('.framework')
64
+ UI.user_error!("Couldn't find framework at #{framework}") unless File.exist?(framework)
65
+ UI.user_error!("#{framework} doesn't seem to be a framework") unless File.directory?(framework)
66
+ end
67
+ end),
68
+ FastlaneCore::ConfigItem.new(key: :libraries,
69
+ env_name: "FL_CREATE_XCFRAMEWORK_LIBRARIES",
70
+ description: "Libraries to add to the target xcframework, with their corresponding headers",
71
+ type: Hash,
72
+ optional: true,
73
+ conflicting_options: [:frameworks],
74
+ verify_block: proc do |value|
75
+ value.each do |library, headers|
76
+ UI.user_error!("Couldn't find library at #{library}") unless File.exist?(library)
77
+ UI.user_error!("#{headers} doesn't exist or is not a directory") unless headers.empty? || File.directory?(headers)
78
+ end
79
+ end),
80
+ FastlaneCore::ConfigItem.new(key: :output,
81
+ env_name: "FL_CREATE_XCFRAMEWORK_OUTPUT",
82
+ description: "The path to write the xcframework to",
83
+ type: String,
84
+ optional: false),
85
+ FastlaneCore::ConfigItem.new(key: :allow_internal_distribution,
86
+ env_name: "FL_CREATE_XCFRAMEWORK_ALLOW_INTERNAL_DISTRIBUTION",
87
+ description: "Specifies that the created xcframework contains information not suitable for public distribution",
88
+ type: Boolean,
89
+ optional: true,
90
+ default_value: false)
91
+ ]
92
+ end
93
+
94
+ def self.output
95
+ [
96
+ ['XCFRAMEWORK_PATH', 'Location of the generated xcframework']
97
+ ]
98
+ end
99
+
100
+ def self.return_value
101
+ end
102
+
103
+ def self.example_code
104
+ [
105
+ "create_xcframework(frameworks: ['FrameworkA.framework', 'FrameworkB.framework'], output: 'UniversalFramework.xcframework')",
106
+ "create_xcframework(libraries: { 'LibraryA.so' => '', 'LibraryB.so' => 'LibraryBHeaders'}, output: 'UniversalFramework.xcframework')"
107
+ ]
108
+ end
109
+
110
+ def self.category
111
+ :building
112
+ end
113
+
114
+ def self.authors
115
+ ["jgongo"]
116
+ end
117
+
118
+ def self.is_supported?(platform)
119
+ [:ios, :mac].include?(platform)
120
+ end
121
+ end
122
+ end
123
+ end
@@ -17,6 +17,7 @@ module Fastlane
17
17
  cmd << "--danger_id=#{danger_id}" if danger_id
18
18
  cmd << "--dangerfile=#{dangerfile}" if dangerfile
19
19
  cmd << "--fail-on-errors=true" if params[:fail_on_errors]
20
+ cmd << "--fail-if-no-pr=true" if params[:fail_if_no_pr]
20
21
  cmd << "--new-comment" if params[:new_comment]
21
22
  cmd << "--remove-previous-comments" if params[:remove_previous_comments]
22
23
  cmd << "--base=#{base}" if base
@@ -44,62 +45,62 @@ module Fastlane
44
45
  FastlaneCore::ConfigItem.new(key: :use_bundle_exec,
45
46
  env_name: "FL_DANGER_USE_BUNDLE_EXEC",
46
47
  description: "Use bundle exec when there is a Gemfile presented",
47
- is_string: false,
48
+ type: Boolean,
48
49
  default_value: true),
49
50
  FastlaneCore::ConfigItem.new(key: :verbose,
50
51
  env_name: "FL_DANGER_VERBOSE",
51
52
  description: "Show more debugging information",
52
- is_string: false,
53
+ type: Boolean,
53
54
  default_value: false),
54
55
  FastlaneCore::ConfigItem.new(key: :danger_id,
55
56
  env_name: "FL_DANGER_ID",
56
57
  description: "The identifier of this Danger instance",
57
- is_string: true,
58
58
  optional: true),
59
59
  FastlaneCore::ConfigItem.new(key: :dangerfile,
60
60
  env_name: "FL_DANGER_DANGERFILE",
61
61
  description: "The location of your Dangerfile",
62
- is_string: true,
63
62
  optional: true),
64
63
  FastlaneCore::ConfigItem.new(key: :github_api_token,
65
64
  env_name: "FL_DANGER_GITHUB_API_TOKEN",
66
65
  description: "GitHub API token for danger",
67
66
  sensitive: true,
68
- is_string: true,
67
+ code_gen_sensitive: true,
69
68
  optional: true),
70
69
  FastlaneCore::ConfigItem.new(key: :fail_on_errors,
71
70
  env_name: "FL_DANGER_FAIL_ON_ERRORS",
72
71
  description: "Should always fail the build process, defaults to false",
73
- is_string: false,
72
+ type: Boolean,
74
73
  optional: true,
75
74
  default_value: false),
76
75
  FastlaneCore::ConfigItem.new(key: :new_comment,
77
76
  env_name: "FL_DANGER_NEW_COMMENT",
78
77
  description: "Makes Danger post a new comment instead of editing its previous one",
79
- is_string: false,
78
+ type: Boolean,
80
79
  optional: true,
81
80
  default_value: false),
82
81
  FastlaneCore::ConfigItem.new(key: :remove_previous_comments,
83
82
  env_name: "FL_DANGER_REMOVE_PREVIOUS_COMMENT",
84
83
  description: "Makes Danger remove all previous comment and create a new one in the end of the list",
85
- is_string: false,
84
+ type: Boolean,
86
85
  optional: true,
87
86
  default_value: false),
88
87
  FastlaneCore::ConfigItem.new(key: :base,
89
88
  env_name: "FL_DANGER_BASE",
90
89
  description: "A branch/tag/commit to use as the base of the diff. [master|dev|stable]",
91
- is_string: true,
92
90
  optional: true),
93
91
  FastlaneCore::ConfigItem.new(key: :head,
94
92
  env_name: "FL_DANGER_HEAD",
95
93
  description: "A branch/tag/commit to use as the head. [master|dev|stable]",
96
- is_string: true,
97
94
  optional: true),
98
95
  FastlaneCore::ConfigItem.new(key: :pr,
99
96
  env_name: "FL_DANGER_PR",
100
97
  description: "Run danger on a specific pull request. e.g. \"https://github.com/danger/danger/pull/518\"",
101
- is_string: true,
102
- optional: true)
98
+ optional: true),
99
+ FastlaneCore::ConfigItem.new(key: :fail_if_no_pr,
100
+ env_name: "FL_DANGER_FAIL_IF_NO_PR",
101
+ description: "Fail Danger execution if no PR is found",
102
+ type: Boolean,
103
+ default_value: false)
103
104
  ]
104
105
  end
105
106
 
@@ -157,13 +157,12 @@ module Fastlane
157
157
  description: "Release note for distribution page"),
158
158
  FastlaneCore::ConfigItem.new(key: :disable_notify,
159
159
  optional: true,
160
- is_string: false,
160
+ type: Boolean,
161
161
  default_value: false,
162
162
  env_name: "DEPLOYGATE_DISABLE_NOTIFY",
163
163
  description: "Disables Push notification emails"),
164
164
  FastlaneCore::ConfigItem.new(key: :distribution_name,
165
165
  optional: true,
166
- is_string: true,
167
166
  env_name: "DEPLOYGATE_DISTRIBUTION_NAME",
168
167
  description: "Target Distribution Name")
169
168
  ]
@@ -148,8 +148,8 @@ Optional: If _gym_ can't automatically detect the provisioning profiles to use,
148
148
  ```ruby
149
149
  build_app(
150
150
  scheme: "Release",
151
+ export_method: "app-store",
151
152
  export_options: {
152
- method: "app-store",
153
153
  provisioningProfiles: {
154
154
  "com.example.bundleid" => "Provisioning Profile Name",
155
155
  "com.example.bundleid2" => "Provisioning Profile Name 2"
@@ -21,7 +21,7 @@ _screengrab_ generates localized screenshots of your Android app for different d
21
21
  Install the gem
22
22
 
23
23
  ```no-highlight
24
- sudo gem install fastlane
24
+ gem install fastlane
25
25
  ```
26
26
 
27
27
  ##### Gradle dependency
@@ -29,7 +29,7 @@ sudo gem install fastlane
29
29
  androidTestImplementation 'tools.fastlane:screengrab:x.x.x'
30
30
  ```
31
31
 
32
- The latest version is [ ![Download](https://api.bintray.com/packages/fastlane/fastlane/screengrab/images/download.svg) ](https://bintray.com/fastlane/fastlane/screengrab/_latestVersion)
32
+ The latest version is [ ![Download](https://maven-badges.herokuapp.com/maven-central/tools.fastlane/screengrab/badge.svg)](https://search.maven.org/artifact/tools.fastlane/screengrab)
33
33
 
34
34
  As of Screengrab version 2.0.0, all Android test dependencies are AndroidX dependencies. This means a device with API 18+, Android 4.3 or greater is required. If you wish to capture screenshots with an older Android OS, then you must use a 1.x.x version.
35
35
 
@@ -38,21 +38,28 @@ As of Screengrab version 2.0.0, all Android test dependencies are AndroidX depen
38
38
  Ensure that the following permissions exist in your **src/debug/AndroidManifest.xml**
39
39
 
40
40
  ```xml
41
- <!-- Allows unlocking your device and activating its screen so UI tests can succeed -->
42
- <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
43
- <uses-permission android:name="android.permission.WAKE_LOCK"/>
41
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
42
+ xmlns:tools="http://schemas.android.com/tools">
44
43
 
45
- <!-- Allows for storing and retrieving screenshots -->
46
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
47
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
44
+ <!-- Allows storing screenshots on external storage, where it can be accessed by ADB -->
45
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
48
46
 
49
- <!-- Allows changing locales -->
50
- <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
47
+ <!-- Allows changing locales -->
48
+ <uses-permission
49
+ android:name="android.permission.CHANGE_CONFIGURATION"
50
+ tools:ignore="ProtectedPermissions" />
51
+
52
+ <!-- Allows changing SystemUI demo mode -->
53
+ <uses-permission
54
+ android:name="android.permission.DUMP"
55
+ tools:ignore="ProtectedPermissions" />
56
+
57
+ </manifest>
51
58
  ```
52
59
 
53
60
  ##### Configuring your <a href="#ui-tests">UI Tests</a> for Screenshots
54
61
 
55
- 1. Add `LocaleTestRule` to your tests class to handle automatic switching of locales.
62
+ 1. Add `LocaleTestRule` to your tests class to handle automatic switching of locales.
56
63
  If you're using Java use:
57
64
  ```java
58
65
  @ClassRule
@@ -63,7 +70,7 @@ Ensure that the following permissions exist in your **src/debug/AndroidManifest.
63
70
  @Rule @JvmField
64
71
  val localeTestRule = LocaleTestRule()
65
72
  ```
66
- Important is the `@JvmField` annotation. It won't work like that:
73
+ The `@JvmField` annotation is important. It won't work like this:
67
74
  ```kotlin
68
75
  companion object {
69
76
  @get:ClassRule
@@ -79,7 +86,7 @@ Ensure that the following permissions exist in your **src/debug/AndroidManifest.
79
86
  - You can also create a lane and use `build_android_app`:
80
87
  ```ruby
81
88
  desc "Build debug and test APK for screenshots"
82
- lane :build_for_screengrab do
89
+ lane :build_and_screengrab do
83
90
  build_android_app(
84
91
  task: 'assemble',
85
92
  build_type: 'Debug'
@@ -88,6 +95,7 @@ Ensure that the following permissions exist in your **src/debug/AndroidManifest.
88
95
  task: 'assemble',
89
96
  build_type: 'AndroidTest'
90
97
  )
98
+ screengrab()
91
99
  end
92
100
  ```
93
101
  - Once complete run `fastlane screengrab` in your app project directory to generate screenshots
@@ -163,7 +171,7 @@ public class JUnit4StyleTests {
163
171
  public static final LocaleTestRule localeTestRule = new LocaleTestRule();
164
172
 
165
173
  @Rule
166
- public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class);
174
+ public ActivityScenarioRule<MainActivity> activityRule = new ActivityScenarioRule<>(MainActivity.class);
167
175
 
168
176
  @Test
169
177
  public void testTakeScreenshot() {
@@ -181,7 +189,7 @@ Kotlin:
181
189
  @RunWith(JUnit4.class)
182
190
  class JUnit4StyleTests {
183
191
  @get:Rule
184
- var activityRule = ActivityTestRule(MainActivity::class.java)
192
+ var activityRule = ActivityScenarioRule(MainActivity::class.java)
185
193
 
186
194
  @Rule @JvmField
187
195
  val localeTestRule = LocaleTestRule()
@@ -208,22 +216,13 @@ When using JUnit 3 you'll need to add a bit more code:
208
216
  - Use `LocaleUtil.changeDeviceLocaleTo(LocaleUtil.getEndingLocale());` in `tearDown()`
209
217
  - Use `Screengrab.screenshot("name_of_screenshot_here");` to capture screenshots at the appropriate points in your tests
210
218
 
211
- If you're having trouble getting your device unlocked and the screen activated to run tests, try using `ScreenUtil.activateScreenForTesting(activity);` in your test setup.
212
-
213
219
  ## Clean Status Bar
214
220
 
215
- Screengrab can clean your status bar to make your screenshots even more beautiful.
221
+ Screengrab can clean your status bar to make your screenshots even more beautiful.
222
+ It is simply a wrapper that allows configuring SystemUI DemoMode in your code.
216
223
  Note: the clean status bar feature is only supported on devices with *API level >= 23*.
217
224
 
218
- To use the clean status bar feature add the following lines to your src/debug/AndroidManifest.xml
219
- ```xml
220
- <!-- Indicates the use of the clean status bar feature -->
221
- <uses-feature android:name="tools.fastlane.screengrab.cleanstatusbar"/>
222
- <!-- Allows for changing the status bar -->
223
- <uses-permission android:name="android.permission.DUMP"/>
224
- ```
225
-
226
- After that you can enable and disable the clean status bar at any moment during your tests.
225
+ You can enable and disable the clean status bar at any moment during your tests.
227
226
  In most cases you probably want to do this in the @BeforeClass and @AfterClass methods.
228
227
  ```java
229
228
  @BeforeClass
@@ -237,7 +236,7 @@ public static void afterAll() {
237
236
  }
238
237
  ```
239
238
 
240
- Have a look at the methods of the `CleanStatusBar` class to customize the status bar even more.
239
+ Have a look at the methods of the `CleanStatusBar` class to customize the status bar even more.
241
240
  You could for example show the Bluetooth icon and the LTE text.
242
241
  ```java
243
242
  new CleanStatusBar()
@@ -2,7 +2,7 @@
2
2
  <img src="/img/actions/snapshot.png" width="250">
3
3
  </p>
4
4
 
5
- ###### Automate taking localized screenshots of your iOS and tvOS apps on every device
5
+ ###### Automate taking localized screenshots of your iOS, tvOS, and watchOS apps on every device
6
6
 
7
7
  <hr />
8
8
  <h4 align="center">
@@ -10,7 +10,7 @@
10
10
  </h4>
11
11
  <hr />
12
12
 
13
- _snapshot_ generates localized iOS and tvOS screenshots for different device types and languages for the App Store and can be uploaded using ([_deliver_](https://docs.fastlane.tools/actions/deliver/)).
13
+ _snapshot_ generates localized iOS, tvOS, and watchOS screenshots for different device types and languages for the App Store and can be uploaded using ([_deliver_](https://docs.fastlane.tools/actions/deliver/)).
14
14
 
15
15
  You have to manually create 20 (languages) x 6 (devices) x 5 (screenshots) = **600 screenshots**.
16
16
 
@@ -282,6 +282,10 @@ launch_arguments([
282
282
  ])
283
283
  ```
284
284
 
285
+ ## Xcode Environment Variables
286
+
287
+ _snapshot_ includes `FASTLANE_SNAPSHOT=YES` and `FASTLANE_LANGUAGE=<language>` as arguments when executing `xcodebuild`. This means you may use these environment variables in a custom build phase run script to do any additional configuration.
288
+
285
289
  # How does it work?
286
290
 
287
291
  The easiest solution would be to just render the UIWindow into a file. That's not possible because UI Tests don't run on a main thread. So _snapshot_ uses a different approach:
@@ -328,7 +332,7 @@ To get more information about language and locale codes please read [Internation
328
332
 
329
333
  ## Use a clean status bar
330
334
 
331
- You can set `override_status_bar` to `true` to set the status bar to Tuesday January 9th at 9:41AM with full battery and reception.
335
+ You can set `override_status_bar` to `true` to set the status bar to Tuesday January 9th at 9:41AM with full battery and reception. If you need more granular customization, to set a Carrier name for example, also set `override_status_bar_arguments` to the specific arguments to be passed to the `xcrun simctl status_bar override` command. Run `xcrun simctl status_bar --help` to see the options available.
332
336
 
333
337
  ## Editing the `Snapfile`
334
338
 
@@ -68,7 +68,7 @@ Options for create:
68
68
  -y, --sku STRING SKU Number (e.g. '1234') (PRODUCE_SKU)
69
69
  -j, --platform STRING The platform to use (optional) (PRODUCE_PLATFORM)
70
70
  -m, --language STRING Primary Language (e.g. 'English', 'German') (PRODUCE_LANGUAGE)
71
- -c, --company_name STRING The name of your company. Only required if it's the first app you create (PRODUCE_COMPANY_NAME)
71
+ -c, --company_name STRING The name of your company. It's used to set company name on App Store Connect team's app pages. Only required if it's the first app you create (PRODUCE_COMPANY_NAME)
72
72
  -i, --skip_itc [VALUE] Skip the creation of the app on App Store Connect (PRODUCE_SKIP_ITC)
73
73
  -d, --skip_devcenter [VALUE] Skip the creation of the app on the Apple Developer Portal (PRODUCE_SKIP_DEVCENTER)
74
74
  -s, --itc_users ARRAY Array of App Store Connect users. If provided, you can limit access to this newly created app for users with the App Manager, Developer, Marketer or Sales roles (ITC_USERS)
@@ -131,27 +131,62 @@ fastlane produce enable_services --help
131
131
  ```
132
132
 
133
133
  ```no-highlight
134
- --app-group Enable App Groups
135
- --apple-pay Enable Apple Pay
136
- --associated-domains Enable Associated Domains
137
- --data-protection STRING Enable Data Protection, suitable values are "complete", "unlessopen" and "untilfirstauth"
138
- --game-center Enable Game Center
139
- --healthkit Enable HealthKit
140
- --homekit Enable HomeKit
141
- --hotspot Enable Hotspot
142
- --icloud STRING Enable iCloud, suitable values are "legacy" and "cloudkit"
143
- --in-app-purchase Enable In-App Purchase
144
- --inter-app-audio Enable Inter-App-Audio
145
- --multipath Enable Multipath
146
- --network-extension Enable Network Extensions
147
- --nfc-tag-reading Enable NFC Tag Reading
148
- --personal-vpn Enable Personal VPN
149
- --passbook Enable Passbook (deprecated)
150
- --push-notification Enable Push notification (only enables the service, does not configure certificates)
151
- --sirikit Enable SiriKit
152
- --vpn-conf Enable VPN Configuration (deprecated)
153
- --wallet Enable Wallet
154
- --wireless-conf Enable Wireless Accessory Configuration
134
+ --access-wifi Enable Access Wifi
135
+ --app-attest Enable App Attest
136
+ --app-group Enable App Group
137
+ --apple-pay Enable Apple Pay
138
+ --associated-domains Enable Associated Domains
139
+ --auto-fill-credential Enable Auto Fill Credential
140
+ --class-kit Enable Class Kit
141
+ --icloud STRING Enable iCloud, suitable values are "xcode5_compatible" and "xcode6_compatible"
142
+ --custom-network-protocol Enable Custom Network Protocol
143
+ --data-protection STRING Enable Data Protection, suitable values are "complete", "unlessopen" and "untilfirstauth"
144
+ --extended-virtual-address-space Enable Extended Virtual Address Space
145
+ --game-center STRING Enable Game Center, suitable values are "ios" and "macos
146
+ --health-kit Enable Health Kit
147
+ --hls-interstitial-preview Enable Hls Interstitial Preview
148
+ --home-kit Enable Home Kit
149
+ --hotspot Enable Hotspot
150
+ --in-app-purchase Enable In App Purchase
151
+ --inter-app-audio Enable Inter App Audio
152
+ --low-latency-hls Enable Low Latency Hls
153
+ --managed-associated-domains Enable Managed Associated Domains
154
+ --maps Enable Maps
155
+ --multipath Enable Multipath
156
+ --network-extension Enable Network Extension
157
+ --nfc-tag-reading Enable NFC Tag Reading
158
+ --personal-vpn Enable Personal VPN
159
+ --passbook Enable Passbook (deprecated)
160
+ --push-notification Enable Push Notification
161
+ --sign-in-with-apple Enable Sign In With Apple
162
+ --siri-kit Enable Siri Kit
163
+ --system-extension Enable System Extension
164
+ --user-management Enable User Management
165
+ --vpn-configuration Enable Vpn Configuration (deprecated)
166
+ --wallet Enable Wallet
167
+ --wireless-accessory Enable Wireless Accessory
168
+ --car-play-audio-app Enable Car Play Audio App
169
+ --car-play-messaging-app Enable Car Play Messaging App
170
+ --car-play-navigation-app Enable Car Play Navigation App
171
+ --car-play-voip-calling-app Enable Car Play Voip Calling App
172
+ --critical-alerts Enable Critical Alerts
173
+ --hotspot-helper Enable Hotspot Helper
174
+ --driver-kit Enable DriverKit
175
+ --driver-kit-endpoint-security Enable DriverKit Endpoint Security
176
+ --driver-kit-family-hid-device Enable DriverKit Family HID Device
177
+ --driver-kit-family-networking Enable DriverKit Family Networking
178
+ --driver-kit-family-serial Enable DriverKit Family Serial
179
+ --driver-kit-hid-event-service Enable DriverKit HID EventService
180
+ --driver-kit-transport-hid Enable DriverKit Transport HID
181
+ --multitasking-camera-access Enable Multitasking Camera Access
182
+ --sf-universal-link-api Enable SFUniversalLink API
183
+ --vp9-decoder Enable VP9 Decoder
184
+ --music-kit Enable MusicKit
185
+ --shazam-kit Enable ShazamKit
186
+ --communication-notifications Enable Communication Notifications
187
+ --group-activities Enable Group Activities
188
+ --health-kit-estimate-recalibration Enable HealthKit Estimate Recalibration
189
+ --time-sensitive-notifications Enable Time Sensitive Notifications
155
190
  ```
156
191
 
157
192
  ```no-highlight
@@ -159,27 +194,62 @@ fastlane produce disable_services --help
159
194
  ```
160
195
 
161
196
  ```no-highlight
162
- --app-group Disable App Groups
163
- --apple-pay Disable Apple Pay
164
- --associated-domains Disable Associated Domains
165
- --data-protection Disable Data Protection
166
- --game-center Disable Game Center
167
- --healthkit Disable HealthKit
168
- --homekit Disable HomeKit
169
- --hotspot Disable Hotspot
170
- --icloud Disable iCloud
171
- --in-app-purchase Disable In-App Purchase
172
- --inter-app-audio Disable Inter-App-Audio
173
- --multipath Disable Multipath
174
- --network-extension Disable Network Extensions
175
- --nfc-tag-reading Disable NFC Tag Reading
176
- --personal-vpn Disable Personal VPN
177
- --passbook Disable Passbook (deprecated)
178
- --push-notification Disable Push notifications
179
- --sirikit Disable SiriKit
180
- --vpn-conf Disable VPN Configuration (deprecated)
181
- --wallet Disable Wallet
182
- --wireless-conf Disable Wireless Accessory Configuration
197
+ --access-wifi Disable Access Wifi
198
+ --app-attest Disable App Attest
199
+ --app-group Disable App Group
200
+ --apple-pay Disable Apple Pay
201
+ --associated-domains Disable Associated Domains
202
+ --auto-fill-credential Disable Auto Fill Credential
203
+ --class-kit Disable Class Kit
204
+ --icloud STRING Disable iCloud
205
+ --custom-network-protocol Disable Custom Network Protocol
206
+ --data-protection STRING Disable Data Protection
207
+ --extended-virtual-address-space Disable Extended Virtual Address Space
208
+ --game-center STRING Disable Game Center
209
+ --health-kit Disable Health Kit
210
+ --hls-interstitial-preview Disable Hls Interstitial Preview
211
+ --home-kit Disable Home Kit
212
+ --hotspot Disable Hotspot
213
+ --in-app-purchase Disable In App Purchase
214
+ --inter-app-audio Disable Inter App Audio
215
+ --low-latency-hls Disable Low Latency Hls
216
+ --managed-associated-domains Disable Managed Associated Domains
217
+ --maps Disable Maps
218
+ --multipath Disable Multipath
219
+ --network-extension Disable Network Extension
220
+ --nfc-tag-reading Disable NFC Tag Reading
221
+ --personal-vpn Disable Personal VPN
222
+ --passbook Disable Passbook (deprecated)
223
+ --push-notification Disable Push Notification
224
+ --sign-in-with-apple Disable Sign In With Apple
225
+ --siri-kit Disable Siri Kit
226
+ --system-extension Disable System Extension
227
+ --user-management Disable User Management
228
+ --vpn-configuration Disable Vpn Configuration (deprecated)
229
+ --wallet Disable Wallet
230
+ --wireless-accessory Disable Wireless Accessory
231
+ --car-play-audio-app Disable Car Play Audio App
232
+ --car-play-messaging-app Disable Car Play Messaging App
233
+ --car-play-navigation-app Disable Car Play Navigation App
234
+ --car-play-voip-calling-app Disable Car Play Voip Calling App
235
+ --critical-alerts Disable Critical Alerts
236
+ --hotspot-helper Disable Hotspot Helper
237
+ --driver-kit Disable DriverKit
238
+ --driver-kit-endpoint-security Disable DriverKit Endpoint Security
239
+ --driver-kit-family-hid-device Disable DriverKit Family HID Device
240
+ --driver-kit-family-networking Disable DriverKit Family Networking
241
+ --driver-kit-family-serial Disable DriverKit Family Serial
242
+ --driver-kit-hid-event-service Disable DriverKit HID EventService
243
+ --driver-kit-transport-hid Disable DriverKit Transport HID
244
+ --multitasking-camera-access Disable Multitasking Camera Access
245
+ --sf-universal-link-api Disable SFUniversalLink API
246
+ --vp9-decoder Disable VP9 Decoder
247
+ --music-kit Disable MusicKit
248
+ --shazam-kit Disable ShazamKit
249
+ --communication-notifications Disable Communication Notifications
250
+ --group-activities Disable Group Activities
251
+ --health-kit-estimate-recalibration Disable HealthKit Estimate Recalibration
252
+ --time-sensitive-notifications Disable Time Sensitive Notifications
183
253
  ```
184
254
 
185
255
  ## Creating Apple Pay merchants and associating them with an App ID
@@ -236,30 +306,64 @@ lane :release do
236
306
  # Optional
237
307
  # App services can be enabled during app creation
238
308
  enable_services: {
239
- access_wifi: "on", # Valid values: "on", "off"
240
- app_group: "on", # Valid values: "on", "off"
241
- apple_pay: "on", # Valid values: "on", "off"
242
- associated_domains: "on", # Valid values: "on", "off"
243
- auto_fill_credential: "on", # Valid values: "on", "off"
244
- data_protection: "complete", # Valid values: "complete", "unlessopen", "untilfirstauth",
245
- game_center: "on", # Valid values: "on", "off"
246
- health_kit: "on", # Valid values: "on", "off"
247
- home_kit: "on", # Valid values: "on", "off"
248
- hotspot: "on", # Valid values: "on", "off"
249
- icloud: "cloudkit", # Valid values: "legacy", "cloudkit"
250
- in_app_purchase: "on", # Valid values: "on", "off"
251
- inter_app_audio: "on", # Valid values: "on", "off"
252
- passbook: "on", # Valid values: "on", "off"
253
- multipath: "on", # Valid values: "on", "off"
254
- network_extension: "on", # Valid values: "on", "off"
255
- nfc_tag_reading: "on", # Valid values: "on", "off"
256
- personal_vpn: "on", # Valid values: "on", "off"
257
- passbook: "on", # Valid values: "on", "off" (deprecated)
258
- push_notification: "on", # Valid values: "on", "off"
259
- siri_kit: "on", # Valid values: "on", "off"
260
- vpn_configuration: "on", # Valid values: "on", "off" (deprecated)
261
- wallet: "on", # Valid values: "on", "off"
262
- wireless_accessory: "on", # Valid values: "on", "off"
309
+ access_wifi: "on", # Valid values: "on", "off"
310
+ app_attest: "on", # Valid values: "on", "off"
311
+ app_group: "on", # Valid values: "on", "off"
312
+ apple_pay: "on", # Valid values: "on", "off"
313
+ associated_domains: "on", # Valid values: "on", "off"
314
+ auto_fill_credential: "on", # Valid values: "on", "off"
315
+ car_play_audio_app: "on", # Valid values: "on", "off"
316
+ car_play_messaging_app: "on", # Valid values: "on", "off"
317
+ car_play_navigation_app: "on", # Valid values: "on", "off"
318
+ car_play_voip_calling_app: "on", # Valid values: "on", "off"
319
+ class_kit: "on", # Valid values: "on", "off"
320
+ icloud: "xcode5_compatible", # Valid values: "xcode5_compatible", "xcode6_compatible", "off"
321
+ critical_alerts: "on", # Valid values: "on", "off"
322
+ custom_network_protocol: "on", # Valid values: "on", "off"
323
+ data_protection: "complete", # Valid values: "complete", "unlessopen", "untilfirstauth", "off"
324
+ extended_virtual_address_space: "on", # Valid values: "on", "off"
325
+ file_provider_testing_mode: "on", # Valid values: "on", "off"
326
+ fonts: "on", # Valid values: "on", "off"
327
+ game_center: "ios", # Valid values: "ios", "macos", off"
328
+ health_kit: "on", # Valid values: "on", "off"
329
+ hls_interstitial_preview: "on", # Valid values: "on", "off"
330
+ home_kit: "on", # Valid values: "on", "off"
331
+ hotspot: "on", # Valid values: "on", "off"
332
+ hotspot_helper: "on", # Valid values: "on", "off"
333
+ in_app_purchase: "on", # Valid values: "on", "off"
334
+ inter_app_audio: "on", # Valid values: "on", "off"
335
+ low_latency_hls: "on", # Valid values: "on", "off"
336
+ managed_associated_domains: "on", # Valid values: "on", "off"
337
+ maps: "on", # Valid values: "on", "off"
338
+ multipath: "on", # Valid values: "on", "off"
339
+ network_extension: "on", # Valid values: "on", "off"
340
+ nfc_tag_reading: "on", # Valid values: "on", "off"
341
+ passbook: "on", # Valid values: "on", "off" (deprecated)
342
+ personal_vpn: "on", # Valid values: "on", "off"
343
+ push_notification: "on", # Valid values: "on", "off"
344
+ sign_in_with_apple: "on", # Valid values: "on", "off"
345
+ siri_kit: "on", # Valid values: "on", "off"
346
+ system_extension: "on", # Valid values: "on", "off"
347
+ user_management: "on", # Valid values: "on", "off"
348
+ vpn_configuration: "on", # Valid values: "on", "off" (deprecated)
349
+ wallet: "on", # Valid values: "on", "off"
350
+ wireless_accessory: "on", # Valid values: "on", "off"
351
+ driver_kit: "on", # Valid values: "on", "off"
352
+ driver_kit_endpoint_security: "on", # Valid values: "on", "off"
353
+ driver_kit_family_hid_device: "on", # Valid values: "on", "off"
354
+ driver_kit_family_networking: "on", # Valid values: "on", "off"
355
+ driver_kit_family_serial: "on", # Valid values: "on", "off"
356
+ driver_kit_hid_event_service: "on", # Valid values: "on", "off"
357
+ driver_kit_transport_hid: "on", # Valid values: "on", "off"
358
+ multitasking_camera_access: "on", # Valid values: "on", "off"
359
+ sf_universal_link_api: "on", # Valid values: "on", "off"
360
+ vp9_decoder: "on", # Valid values: "on", "off"
361
+ music_kit: "on", # Valid values: "on", "off"
362
+ shazam_kit: "on", # Valid values: "on", "off"
363
+ communication_notifications: "on", # Valid values: "on", "off"
364
+ group_activities: "on", # Valid values: "on", "off"
365
+ health_kit_estimate_recalibration: "on", # Valid values: "on", "off"
366
+ time_sensitive_notifications: "on", # Valid values: "on", "off"
263
367
  }
264
368
  )
265
369