fastlane_hotfix 2.165.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (868) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +1 -0
  3. data/LICENSE +21 -0
  4. data/README.md +208 -0
  5. data/bin/bin-proxy +19 -0
  6. data/bin/fastlane +23 -0
  7. data/cert/README.md +17 -0
  8. data/cert/lib/cert.rb +4 -0
  9. data/cert/lib/cert/commands_generator.rb +60 -0
  10. data/cert/lib/cert/module.rb +16 -0
  11. data/cert/lib/cert/options.rb +132 -0
  12. data/cert/lib/cert/runner.rb +239 -0
  13. data/credentials_manager/README.md +64 -0
  14. data/credentials_manager/lib/credentials_manager.rb +7 -0
  15. data/credentials_manager/lib/credentials_manager/account_manager.rb +157 -0
  16. data/credentials_manager/lib/credentials_manager/appfile_config.rb +196 -0
  17. data/credentials_manager/lib/credentials_manager/cli.rb +69 -0
  18. data/deliver/README.md +17 -0
  19. data/deliver/lib/assets/DeliverfileDefault +3 -0
  20. data/deliver/lib/assets/DeliverfileDefault.swift +13 -0
  21. data/deliver/lib/assets/ScreenshotsHelp +7 -0
  22. data/deliver/lib/assets/summary.html.erb +299 -0
  23. data/deliver/lib/deliver.rb +15 -0
  24. data/deliver/lib/deliver/app_screenshot.rb +354 -0
  25. data/deliver/lib/deliver/app_screenshot_iterator.rb +95 -0
  26. data/deliver/lib/deliver/commands_generator.rb +190 -0
  27. data/deliver/lib/deliver/detect_values.rb +102 -0
  28. data/deliver/lib/deliver/download_screenshots.rb +76 -0
  29. data/deliver/lib/deliver/generate_summary.rb +13 -0
  30. data/deliver/lib/deliver/html_generator.rb +78 -0
  31. data/deliver/lib/deliver/languages.rb +7 -0
  32. data/deliver/lib/deliver/loader.rb +55 -0
  33. data/deliver/lib/deliver/module.rb +18 -0
  34. data/deliver/lib/deliver/options.rb +465 -0
  35. data/deliver/lib/deliver/queue_worker.rb +49 -0
  36. data/deliver/lib/deliver/runner.rb +233 -0
  37. data/deliver/lib/deliver/setup.rb +199 -0
  38. data/deliver/lib/deliver/submit_for_review.rb +214 -0
  39. data/deliver/lib/deliver/upload_metadata.rb +688 -0
  40. data/deliver/lib/deliver/upload_price_tier.rb +40 -0
  41. data/deliver/lib/deliver/upload_screenshots.rb +333 -0
  42. data/fastlane/README.md +11 -0
  43. data/fastlane/lib/assets/ActionDetails.md.erb +106 -0
  44. data/fastlane/lib/assets/Actions.md.erb +43 -0
  45. data/fastlane/lib/assets/AppfileTemplate +6 -0
  46. data/fastlane/lib/assets/AppfileTemplate.swift +7 -0
  47. data/fastlane/lib/assets/AppfileTemplateAndroid +2 -0
  48. data/fastlane/lib/assets/DefaultFastfileTemplate +20 -0
  49. data/fastlane/lib/assets/DefaultFastfileTemplate.swift +13 -0
  50. data/fastlane/lib/assets/completions/completion.bash +23 -0
  51. data/fastlane/lib/assets/completions/completion.fish +39 -0
  52. data/fastlane/lib/assets/completions/completion.sh +12 -0
  53. data/fastlane/lib/assets/completions/completion.zsh +23 -0
  54. data/fastlane/lib/assets/custom_action_template.rb +82 -0
  55. data/fastlane/lib/assets/mailgun_html_template.erb +142 -0
  56. data/fastlane/lib/assets/report_template.xml.erb +15 -0
  57. data/fastlane/lib/assets/s3_html_template.erb +105 -0
  58. data/fastlane/lib/assets/s3_plist_template.erb +31 -0
  59. data/fastlane/lib/assets/s3_version_template.erb +4 -0
  60. data/fastlane/lib/fastlane.rb +53 -0
  61. data/fastlane/lib/fastlane/action.rb +198 -0
  62. data/fastlane/lib/fastlane/action_collector.rb +35 -0
  63. data/fastlane/lib/fastlane/actions/README.md +5 -0
  64. data/fastlane/lib/fastlane/actions/actions_helper.rb +185 -0
  65. data/fastlane/lib/fastlane/actions/adb.rb +78 -0
  66. data/fastlane/lib/fastlane/actions/adb_devices.rb +71 -0
  67. data/fastlane/lib/fastlane/actions/add_extra_platforms.rb +45 -0
  68. data/fastlane/lib/fastlane/actions/add_git_tag.rb +122 -0
  69. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +249 -0
  70. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +134 -0
  71. data/fastlane/lib/fastlane/actions/appaloosa.rb +266 -0
  72. data/fastlane/lib/fastlane/actions/appetize.rb +188 -0
  73. data/fastlane/lib/fastlane/actions/appetize_viewing_url_generator.rb +146 -0
  74. data/fastlane/lib/fastlane/actions/appium.rb +206 -0
  75. data/fastlane/lib/fastlane/actions/appledoc.rb +226 -0
  76. data/fastlane/lib/fastlane/actions/appstore.rb +14 -0
  77. data/fastlane/lib/fastlane/actions/apteligent.rb +105 -0
  78. data/fastlane/lib/fastlane/actions/artifactory.rb +157 -0
  79. data/fastlane/lib/fastlane/actions/automatic_code_signing.rb +226 -0
  80. data/fastlane/lib/fastlane/actions/backup_file.rb +41 -0
  81. data/fastlane/lib/fastlane/actions/backup_xcarchive.rb +135 -0
  82. data/fastlane/lib/fastlane/actions/badge.rb +155 -0
  83. data/fastlane/lib/fastlane/actions/build_and_upload_to_appetize.rb +107 -0
  84. data/fastlane/lib/fastlane/actions/build_android_app.rb +14 -0
  85. data/fastlane/lib/fastlane/actions/build_app.rb +165 -0
  86. data/fastlane/lib/fastlane/actions/build_ios_app.rb +47 -0
  87. data/fastlane/lib/fastlane/actions/build_mac_app.rb +46 -0
  88. data/fastlane/lib/fastlane/actions/bundle_install.rb +156 -0
  89. data/fastlane/lib/fastlane/actions/capture_android_screenshots.rb +63 -0
  90. data/fastlane/lib/fastlane/actions/capture_ios_screenshots.rb +61 -0
  91. data/fastlane/lib/fastlane/actions/capture_screenshots.rb +14 -0
  92. data/fastlane/lib/fastlane/actions/carthage.rb +230 -0
  93. data/fastlane/lib/fastlane/actions/cert.rb +14 -0
  94. data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +197 -0
  95. data/fastlane/lib/fastlane/actions/chatwork.rb +94 -0
  96. data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +54 -0
  97. data/fastlane/lib/fastlane/actions/clean_build_artifacts.rb +72 -0
  98. data/fastlane/lib/fastlane/actions/clean_cocoapods_cache.rb +52 -0
  99. data/fastlane/lib/fastlane/actions/clear_derived_data.rb +70 -0
  100. data/fastlane/lib/fastlane/actions/clipboard.rb +52 -0
  101. data/fastlane/lib/fastlane/actions/cloc.rb +89 -0
  102. data/fastlane/lib/fastlane/actions/cocoapods.rb +170 -0
  103. data/fastlane/lib/fastlane/actions/commit_github_file.rb +186 -0
  104. data/fastlane/lib/fastlane/actions/commit_version_bump.rb +301 -0
  105. data/fastlane/lib/fastlane/actions/copy_artifacts.rb +114 -0
  106. data/fastlane/lib/fastlane/actions/crashlytics.rb +211 -0
  107. data/fastlane/lib/fastlane/actions/create_app_on_managed_play_store.rb +174 -0
  108. data/fastlane/lib/fastlane/actions/create_app_online.rb +75 -0
  109. data/fastlane/lib/fastlane/actions/create_keychain.rb +177 -0
  110. data/fastlane/lib/fastlane/actions/create_pull_request.rb +265 -0
  111. data/fastlane/lib/fastlane/actions/danger.rb +131 -0
  112. data/fastlane/lib/fastlane/actions/debug.rb +32 -0
  113. data/fastlane/lib/fastlane/actions/default_platform.rb +47 -0
  114. data/fastlane/lib/fastlane/actions/delete_keychain.rb +68 -0
  115. data/fastlane/lib/fastlane/actions/deliver.rb +14 -0
  116. data/fastlane/lib/fastlane/actions/deploygate.rb +210 -0
  117. data/fastlane/lib/fastlane/actions/device_grid/README.md +157 -0
  118. data/fastlane/lib/fastlane/actions/docs/build_app.md +245 -0
  119. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +333 -0
  120. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +371 -0
  121. data/fastlane/lib/fastlane/actions/docs/check_app_store_metadata.md +103 -0
  122. data/fastlane/lib/fastlane/actions/docs/create_app_online.md +282 -0
  123. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +349 -0
  124. data/fastlane/lib/fastlane/actions/docs/get_certificates.md +86 -0
  125. data/fastlane/lib/fastlane/actions/docs/get_provisioning_profile.md +223 -0
  126. data/fastlane/lib/fastlane/actions/docs/get_push_certificate.md +134 -0
  127. data/fastlane/lib/fastlane/actions/docs/run_tests.md +151 -0
  128. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +573 -0
  129. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +725 -0
  130. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +203 -0
  131. data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +250 -0
  132. data/fastlane/lib/fastlane/actions/dotgpg_environment.rb +57 -0
  133. data/fastlane/lib/fastlane/actions/download.rb +76 -0
  134. data/fastlane/lib/fastlane/actions/download_dsyms.rb +369 -0
  135. data/fastlane/lib/fastlane/actions/download_from_play_store.rb +61 -0
  136. data/fastlane/lib/fastlane/actions/dsym_zip.rb +93 -0
  137. data/fastlane/lib/fastlane/actions/echo.rb +14 -0
  138. data/fastlane/lib/fastlane/actions/ensure_bundle_exec.rb +59 -0
  139. data/fastlane/lib/fastlane/actions/ensure_env_vars.rb +58 -0
  140. data/fastlane/lib/fastlane/actions/ensure_git_branch.rb +69 -0
  141. data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +92 -0
  142. data/fastlane/lib/fastlane/actions/ensure_no_debug_code.rb +135 -0
  143. data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +125 -0
  144. data/fastlane/lib/fastlane/actions/environment_variable.rb +77 -0
  145. data/fastlane/lib/fastlane/actions/erb.rb +96 -0
  146. data/fastlane/lib/fastlane/actions/fastlane_version.rb +15 -0
  147. data/fastlane/lib/fastlane/actions/flock.rb +82 -0
  148. data/fastlane/lib/fastlane/actions/frame_screenshots.rb +64 -0
  149. data/fastlane/lib/fastlane/actions/frameit.rb +14 -0
  150. data/fastlane/lib/fastlane/actions/gcovr.rb +163 -0
  151. data/fastlane/lib/fastlane/actions/get_build_number.rb +106 -0
  152. data/fastlane/lib/fastlane/actions/get_build_number_repository.rb +120 -0
  153. data/fastlane/lib/fastlane/actions/get_certificates.rb +77 -0
  154. data/fastlane/lib/fastlane/actions/get_github_release.rb +166 -0
  155. data/fastlane/lib/fastlane/actions/get_info_plist_value.rb +78 -0
  156. data/fastlane/lib/fastlane/actions/get_ipa_info_plist_value.rb +82 -0
  157. data/fastlane/lib/fastlane/actions/get_managed_play_store_publishing_rights.rb +120 -0
  158. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +101 -0
  159. data/fastlane/lib/fastlane/actions/get_push_certificate.rb +87 -0
  160. data/fastlane/lib/fastlane/actions/get_version_number.rb +200 -0
  161. data/fastlane/lib/fastlane/actions/git_add.rb +93 -0
  162. data/fastlane/lib/fastlane/actions/git_branch.rb +61 -0
  163. data/fastlane/lib/fastlane/actions/git_commit.rb +80 -0
  164. data/fastlane/lib/fastlane/actions/git_pull.rb +64 -0
  165. data/fastlane/lib/fastlane/actions/git_submodule_update.rb +52 -0
  166. data/fastlane/lib/fastlane/actions/git_tag_exists.rb +74 -0
  167. data/fastlane/lib/fastlane/actions/github_api.rb +262 -0
  168. data/fastlane/lib/fastlane/actions/google_play_track_release_names.rb +74 -0
  169. data/fastlane/lib/fastlane/actions/google_play_track_version_codes.rb +77 -0
  170. data/fastlane/lib/fastlane/actions/gradle.rb +329 -0
  171. data/fastlane/lib/fastlane/actions/gym.rb +10 -0
  172. data/fastlane/lib/fastlane/actions/hg_add_tag.rb +48 -0
  173. data/fastlane/lib/fastlane/actions/hg_commit_version_bump.rb +183 -0
  174. data/fastlane/lib/fastlane/actions/hg_ensure_clean_status.rb +53 -0
  175. data/fastlane/lib/fastlane/actions/hg_push.rb +64 -0
  176. data/fastlane/lib/fastlane/actions/hipchat.rb +200 -0
  177. data/fastlane/lib/fastlane/actions/hockey.rb +406 -0
  178. data/fastlane/lib/fastlane/actions/ifttt.rb +96 -0
  179. data/fastlane/lib/fastlane/actions/import.rb +49 -0
  180. data/fastlane/lib/fastlane/actions/import_certificate.rb +77 -0
  181. data/fastlane/lib/fastlane/actions/import_from_git.rb +83 -0
  182. data/fastlane/lib/fastlane/actions/increment_build_number.rb +117 -0
  183. data/fastlane/lib/fastlane/actions/increment_version_number.rb +180 -0
  184. data/fastlane/lib/fastlane/actions/install_on_device.rb +95 -0
  185. data/fastlane/lib/fastlane/actions/install_provisioning_profile.rb +58 -0
  186. data/fastlane/lib/fastlane/actions/install_xcode_plugin.rb +91 -0
  187. data/fastlane/lib/fastlane/actions/installr.rb +132 -0
  188. data/fastlane/lib/fastlane/actions/ipa.rb +246 -0
  189. data/fastlane/lib/fastlane/actions/is_ci.rb +51 -0
  190. data/fastlane/lib/fastlane/actions/jazzy.rb +56 -0
  191. data/fastlane/lib/fastlane/actions/jira.rb +115 -0
  192. data/fastlane/lib/fastlane/actions/lane_context.rb +60 -0
  193. data/fastlane/lib/fastlane/actions/last_git_commit.rb +58 -0
  194. data/fastlane/lib/fastlane/actions/last_git_tag.rb +60 -0
  195. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +155 -0
  196. data/fastlane/lib/fastlane/actions/lcov.rb +102 -0
  197. data/fastlane/lib/fastlane/actions/mailgun.rb +197 -0
  198. data/fastlane/lib/fastlane/actions/make_changelog_from_jenkins.rb +81 -0
  199. data/fastlane/lib/fastlane/actions/match.rb +14 -0
  200. data/fastlane/lib/fastlane/actions/min_fastlane_version.rb +57 -0
  201. data/fastlane/lib/fastlane/actions/modify_services.rb +173 -0
  202. data/fastlane/lib/fastlane/actions/nexus_upload.rb +230 -0
  203. data/fastlane/lib/fastlane/actions/notarize.rb +193 -0
  204. data/fastlane/lib/fastlane/actions/notification.rb +75 -0
  205. data/fastlane/lib/fastlane/actions/notify.rb +40 -0
  206. data/fastlane/lib/fastlane/actions/number_of_commits.rb +75 -0
  207. data/fastlane/lib/fastlane/actions/oclint.rb +269 -0
  208. data/fastlane/lib/fastlane/actions/onesignal.rb +186 -0
  209. data/fastlane/lib/fastlane/actions/opt_out_crash_reporting.rb +33 -0
  210. data/fastlane/lib/fastlane/actions/opt_out_usage.rb +40 -0
  211. data/fastlane/lib/fastlane/actions/pem.rb +14 -0
  212. data/fastlane/lib/fastlane/actions/pilot.rb +14 -0
  213. data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +189 -0
  214. data/fastlane/lib/fastlane/actions/pod_push.rb +173 -0
  215. data/fastlane/lib/fastlane/actions/podio_item.rb +217 -0
  216. data/fastlane/lib/fastlane/actions/precheck.rb +14 -0
  217. data/fastlane/lib/fastlane/actions/println.rb +14 -0
  218. data/fastlane/lib/fastlane/actions/produce.rb +14 -0
  219. data/fastlane/lib/fastlane/actions/prompt.rb +119 -0
  220. data/fastlane/lib/fastlane/actions/push_git_tags.rb +76 -0
  221. data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +127 -0
  222. data/fastlane/lib/fastlane/actions/puts.rb +68 -0
  223. data/fastlane/lib/fastlane/actions/read_podspec.rb +90 -0
  224. data/fastlane/lib/fastlane/actions/recreate_schemes.rb +46 -0
  225. data/fastlane/lib/fastlane/actions/register_device.rb +151 -0
  226. data/fastlane/lib/fastlane/actions/register_devices.rb +214 -0
  227. data/fastlane/lib/fastlane/actions/reset_git_repo.rb +121 -0
  228. data/fastlane/lib/fastlane/actions/reset_simulator_contents.rb +92 -0
  229. data/fastlane/lib/fastlane/actions/resign.rb +132 -0
  230. data/fastlane/lib/fastlane/actions/restore_file.rb +44 -0
  231. data/fastlane/lib/fastlane/actions/rocket.rb +83 -0
  232. data/fastlane/lib/fastlane/actions/rsync.rb +74 -0
  233. data/fastlane/lib/fastlane/actions/ruby_version.rb +56 -0
  234. data/fastlane/lib/fastlane/actions/run_tests.rb +114 -0
  235. data/fastlane/lib/fastlane/actions/s3.rb +174 -0
  236. data/fastlane/lib/fastlane/actions/say.rb +56 -0
  237. data/fastlane/lib/fastlane/actions/scan.rb +14 -0
  238. data/fastlane/lib/fastlane/actions/scp.rb +114 -0
  239. data/fastlane/lib/fastlane/actions/screengrab.rb +14 -0
  240. data/fastlane/lib/fastlane/actions/set_build_number_repository.rb +76 -0
  241. data/fastlane/lib/fastlane/actions/set_changelog.rb +204 -0
  242. data/fastlane/lib/fastlane/actions/set_github_release.rb +274 -0
  243. data/fastlane/lib/fastlane/actions/set_info_plist_value.rb +92 -0
  244. data/fastlane/lib/fastlane/actions/set_pod_key.rb +78 -0
  245. data/fastlane/lib/fastlane/actions/setup_ci.rb +132 -0
  246. data/fastlane/lib/fastlane/actions/setup_circle_ci.rb +58 -0
  247. data/fastlane/lib/fastlane/actions/setup_jenkins.rb +202 -0
  248. data/fastlane/lib/fastlane/actions/setup_travis.rb +57 -0
  249. data/fastlane/lib/fastlane/actions/sh.rb +71 -0
  250. data/fastlane/lib/fastlane/actions/sigh.rb +14 -0
  251. data/fastlane/lib/fastlane/actions/skip_docs.rb +52 -0
  252. data/fastlane/lib/fastlane/actions/slack.rb +288 -0
  253. data/fastlane/lib/fastlane/actions/slather.rb +329 -0
  254. data/fastlane/lib/fastlane/actions/snapshot.rb +14 -0
  255. data/fastlane/lib/fastlane/actions/sonar.rb +177 -0
  256. data/fastlane/lib/fastlane/actions/spaceship_logs.rb +135 -0
  257. data/fastlane/lib/fastlane/actions/spaceship_stats.rb +73 -0
  258. data/fastlane/lib/fastlane/actions/splunkmint.rb +156 -0
  259. data/fastlane/lib/fastlane/actions/spm.rb +138 -0
  260. data/fastlane/lib/fastlane/actions/ssh.rb +162 -0
  261. data/fastlane/lib/fastlane/actions/supply.rb +14 -0
  262. data/fastlane/lib/fastlane/actions/swiftlint.rb +240 -0
  263. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +109 -0
  264. data/fastlane/lib/fastlane/actions/team_id.rb +42 -0
  265. data/fastlane/lib/fastlane/actions/team_name.rb +42 -0
  266. data/fastlane/lib/fastlane/actions/testfairy.rb +285 -0
  267. data/fastlane/lib/fastlane/actions/testflight.rb +14 -0
  268. data/fastlane/lib/fastlane/actions/tryouts.rb +149 -0
  269. data/fastlane/lib/fastlane/actions/twitter.rb +89 -0
  270. data/fastlane/lib/fastlane/actions/typetalk.rb +93 -0
  271. data/fastlane/lib/fastlane/actions/unlock_keychain.rb +132 -0
  272. data/fastlane/lib/fastlane/actions/update_app_group_identifiers.rb +91 -0
  273. data/fastlane/lib/fastlane/actions/update_app_identifier.rb +124 -0
  274. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +203 -0
  275. data/fastlane/lib/fastlane/actions/update_fastlane.rb +137 -0
  276. data/fastlane/lib/fastlane/actions/update_icloud_container_identifiers.rb +99 -0
  277. data/fastlane/lib/fastlane/actions/update_info_plist.rb +143 -0
  278. data/fastlane/lib/fastlane/actions/update_keychain_access_groups.rb +94 -0
  279. data/fastlane/lib/fastlane/actions/update_plist.rb +115 -0
  280. data/fastlane/lib/fastlane/actions/update_project_code_signing.rb +76 -0
  281. data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +173 -0
  282. data/fastlane/lib/fastlane/actions/update_project_team.rb +95 -0
  283. data/fastlane/lib/fastlane/actions/update_urban_airship_configuration.rb +91 -0
  284. data/fastlane/lib/fastlane/actions/update_url_schemes.rb +123 -0
  285. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +231 -0
  286. data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +165 -0
  287. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +67 -0
  288. data/fastlane/lib/fastlane/actions/upload_to_play_store.rb +80 -0
  289. data/fastlane/lib/fastlane/actions/upload_to_play_store_internal_app_sharing.rb +78 -0
  290. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +119 -0
  291. data/fastlane/lib/fastlane/actions/validate_play_store_json_key.rb +104 -0
  292. data/fastlane/lib/fastlane/actions/verify_build.rb +199 -0
  293. data/fastlane/lib/fastlane/actions/verify_pod_keys.rb +67 -0
  294. data/fastlane/lib/fastlane/actions/verify_xcode.rb +159 -0
  295. data/fastlane/lib/fastlane/actions/version_bump_podspec.rb +105 -0
  296. data/fastlane/lib/fastlane/actions/version_get_podspec.rb +71 -0
  297. data/fastlane/lib/fastlane/actions/xcode_install.rb +105 -0
  298. data/fastlane/lib/fastlane/actions/xcode_select.rb +68 -0
  299. data/fastlane/lib/fastlane/actions/xcode_server_get_assets.rb +312 -0
  300. data/fastlane/lib/fastlane/actions/xcodebuild.rb +641 -0
  301. data/fastlane/lib/fastlane/actions/xcov.rb +66 -0
  302. data/fastlane/lib/fastlane/actions/xctool.rb +55 -0
  303. data/fastlane/lib/fastlane/actions/xcversion.rb +55 -0
  304. data/fastlane/lib/fastlane/actions/zip.rb +120 -0
  305. data/fastlane/lib/fastlane/auto_complete.rb +82 -0
  306. data/fastlane/lib/fastlane/boolean.rb +5 -0
  307. data/fastlane/lib/fastlane/cli_tools_distributor.rb +207 -0
  308. data/fastlane/lib/fastlane/command_line_handler.rb +49 -0
  309. data/fastlane/lib/fastlane/commands_generator.rb +369 -0
  310. data/fastlane/lib/fastlane/configuration_helper.rb +26 -0
  311. data/fastlane/lib/fastlane/core_ext/bundler_monkey_patch.rb +14 -0
  312. data/fastlane/lib/fastlane/documentation/actions_list.rb +214 -0
  313. data/fastlane/lib/fastlane/documentation/docs_generator.rb +89 -0
  314. data/fastlane/lib/fastlane/documentation/markdown_docs_generator.rb +228 -0
  315. data/fastlane/lib/fastlane/environment_printer.rb +303 -0
  316. data/fastlane/lib/fastlane/erb_template_helper.rb +30 -0
  317. data/fastlane/lib/fastlane/fast_file.rb +439 -0
  318. data/fastlane/lib/fastlane/fastlane_require.rb +75 -0
  319. data/fastlane/lib/fastlane/features.rb +4 -0
  320. data/fastlane/lib/fastlane/helper/README.md +29 -0
  321. data/fastlane/lib/fastlane/helper/adb_helper.rb +66 -0
  322. data/fastlane/lib/fastlane/helper/crashlytics_helper.rb +157 -0
  323. data/fastlane/lib/fastlane/helper/dotenv_helper.rb +50 -0
  324. data/fastlane/lib/fastlane/helper/gem_helper.rb +26 -0
  325. data/fastlane/lib/fastlane/helper/git_helper.rb +137 -0
  326. data/fastlane/lib/fastlane/helper/gradle_helper.rb +62 -0
  327. data/fastlane/lib/fastlane/helper/lane_helper.rb +13 -0
  328. data/fastlane/lib/fastlane/helper/podspec_helper.rb +75 -0
  329. data/fastlane/lib/fastlane/helper/s3_client_helper.rb +78 -0
  330. data/fastlane/lib/fastlane/helper/sh_helper.rb +134 -0
  331. data/fastlane/lib/fastlane/helper/xcodeproj_helper.rb +12 -0
  332. data/fastlane/lib/fastlane/helper/xcversion_helper.rb +25 -0
  333. data/fastlane/lib/fastlane/junit_generator.rb +27 -0
  334. data/fastlane/lib/fastlane/lane.rb +97 -0
  335. data/fastlane/lib/fastlane/lane_list.rb +137 -0
  336. data/fastlane/lib/fastlane/lane_manager.rb +130 -0
  337. data/fastlane/lib/fastlane/lane_manager_base.rb +92 -0
  338. data/fastlane/lib/fastlane/markdown_table_formatter.rb +62 -0
  339. data/fastlane/lib/fastlane/new_action.rb +47 -0
  340. data/fastlane/lib/fastlane/one_off.rb +45 -0
  341. data/fastlane/lib/fastlane/other_action.rb +29 -0
  342. data/fastlane/lib/fastlane/plugins/plugin_fetcher.rb +55 -0
  343. data/fastlane/lib/fastlane/plugins/plugin_generator.rb +86 -0
  344. data/fastlane/lib/fastlane/plugins/plugin_generator_ui.rb +19 -0
  345. data/fastlane/lib/fastlane/plugins/plugin_info.rb +49 -0
  346. data/fastlane/lib/fastlane/plugins/plugin_info_collector.rb +159 -0
  347. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +399 -0
  348. data/fastlane/lib/fastlane/plugins/plugin_search.rb +46 -0
  349. data/fastlane/lib/fastlane/plugins/plugin_update_manager.rb +70 -0
  350. data/fastlane/lib/fastlane/plugins/plugins.rb +12 -0
  351. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +35 -0
  352. data/fastlane/lib/fastlane/plugins/template/.circleci/config.yml +43 -0
  353. data/fastlane/lib/fastlane/plugins/template/.github/workflows/test.yml +29 -0
  354. data/fastlane/lib/fastlane/plugins/template/.gitignore +12 -0
  355. data/fastlane/lib/fastlane/plugins/template/.rspec +5 -0
  356. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +188 -0
  357. data/fastlane/lib/fastlane/plugins/template/.travis.yml +4 -0
  358. data/fastlane/lib/fastlane/plugins/template/Gemfile +6 -0
  359. data/fastlane/lib/fastlane/plugins/template/LICENSE.erb +21 -0
  360. data/fastlane/lib/fastlane/plugins/template/README.md.erb +52 -0
  361. data/fastlane/lib/fastlane/plugins/template/Rakefile +9 -0
  362. data/fastlane/lib/fastlane/plugins/template/fastlane/Fastfile.erb +3 -0
  363. data/fastlane/lib/fastlane/plugins/template/fastlane/Pluginfile.erb +1 -0
  364. data/fastlane/lib/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%.rb.erb +16 -0
  365. data/fastlane/lib/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%/actions/%plugin_name%_action.rb.erb +47 -0
  366. data/fastlane/lib/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%/helper/%plugin_name%_helper.rb.erb +16 -0
  367. data/fastlane/lib/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%/version.rb.erb +5 -0
  368. data/fastlane/lib/fastlane/plugins/template/spec/%plugin_name%_action_spec.rb.erb +9 -0
  369. data/fastlane/lib/fastlane/plugins/template/spec/spec_helper.rb.erb +15 -0
  370. data/fastlane/lib/fastlane/runner.rb +378 -0
  371. data/fastlane/lib/fastlane/server/action_command.rb +61 -0
  372. data/fastlane/lib/fastlane/server/action_command_return.rb +14 -0
  373. data/fastlane/lib/fastlane/server/command_executor.rb +7 -0
  374. data/fastlane/lib/fastlane/server/command_parser.rb +44 -0
  375. data/fastlane/lib/fastlane/server/control_command.rb +23 -0
  376. data/fastlane/lib/fastlane/server/json_return_value_processor.rb +72 -0
  377. data/fastlane/lib/fastlane/server/socket_server.rb +238 -0
  378. data/fastlane/lib/fastlane/server/socket_server_action_command_executor.rb +101 -0
  379. data/fastlane/lib/fastlane/setup/setup.rb +355 -0
  380. data/fastlane/lib/fastlane/setup/setup_android.rb +97 -0
  381. data/fastlane/lib/fastlane/setup/setup_ios.rb +504 -0
  382. data/fastlane/lib/fastlane/shells.rb +6 -0
  383. data/fastlane/lib/fastlane/supported_platforms.rb +28 -0
  384. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +477 -0
  385. data/fastlane/lib/fastlane/swift_fastlane_function.rb +419 -0
  386. data/fastlane/lib/fastlane/swift_lane_manager.rb +296 -0
  387. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +210 -0
  388. data/fastlane/lib/fastlane/tools.rb +33 -0
  389. data/fastlane/lib/fastlane/version.rb +6 -0
  390. data/fastlane/swift/Actions.swift +16 -0
  391. data/fastlane/swift/Appfile.swift +15 -0
  392. data/fastlane/swift/ArgumentProcessor.swift +89 -0
  393. data/fastlane/swift/ControlCommand.swift +74 -0
  394. data/fastlane/swift/Deliverfile.swift +20 -0
  395. data/fastlane/swift/DeliverfileProtocol.swift +259 -0
  396. data/fastlane/swift/Fastfile.swift +16 -0
  397. data/fastlane/swift/Fastlane.swift +9402 -0
  398. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +434 -0
  399. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  400. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  401. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +97 -0
  402. data/fastlane/swift/FastlaneSwiftRunner/README.txt +10 -0
  403. data/fastlane/swift/Gymfile.swift +20 -0
  404. data/fastlane/swift/GymfileProtocol.swift +187 -0
  405. data/fastlane/swift/LaneFileProtocol.swift +149 -0
  406. data/fastlane/swift/MainProcess.swift +77 -0
  407. data/fastlane/swift/Matchfile.swift +20 -0
  408. data/fastlane/swift/MatchfileProtocol.swift +187 -0
  409. data/fastlane/swift/Plugins.swift +16 -0
  410. data/fastlane/swift/Precheckfile.swift +20 -0
  411. data/fastlane/swift/PrecheckfileProtocol.swift +51 -0
  412. data/fastlane/swift/RubyCommand.swift +157 -0
  413. data/fastlane/swift/RubyCommandable.swift +43 -0
  414. data/fastlane/swift/Runner.swift +275 -0
  415. data/fastlane/swift/RunnerArgument.swift +20 -0
  416. data/fastlane/swift/Scanfile.swift +20 -0
  417. data/fastlane/swift/ScanfileProtocol.swift +263 -0
  418. data/fastlane/swift/Screengrabfile.swift +20 -0
  419. data/fastlane/swift/ScreengrabfileProtocol.swift +99 -0
  420. data/fastlane/swift/Snapshotfile.swift +20 -0
  421. data/fastlane/swift/SnapshotfileProtocol.swift +187 -0
  422. data/fastlane/swift/SocketClient.swift +327 -0
  423. data/fastlane/swift/SocketClientDelegateProtocol.swift +21 -0
  424. data/fastlane/swift/SocketResponse.swift +82 -0
  425. data/fastlane/swift/formatting/Brewfile +1 -0
  426. data/fastlane/swift/formatting/Brewfile.lock.json +47 -0
  427. data/fastlane/swift/formatting/Rakefile +18 -0
  428. data/fastlane/swift/main.swift +47 -0
  429. data/fastlane/swift/upgrade_manifest.json +1 -0
  430. data/fastlane_core/README.md +79 -0
  431. data/fastlane_core/lib/assets/XMLTemplate.xml.erb +12 -0
  432. data/fastlane_core/lib/fastlane_core.rb +46 -0
  433. data/fastlane_core/lib/fastlane_core/analytics/action_completion_context.rb +34 -0
  434. data/fastlane_core/lib/fastlane_core/analytics/action_launch_context.rb +38 -0
  435. data/fastlane_core/lib/fastlane_core/analytics/analytics_event_builder.rb +23 -0
  436. data/fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb +54 -0
  437. data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +70 -0
  438. data/fastlane_core/lib/fastlane_core/analytics/app_identifier_guesser.rb +64 -0
  439. data/fastlane_core/lib/fastlane_core/android_package_name_guesser.rb +79 -0
  440. data/fastlane_core/lib/fastlane_core/build_watcher.rb +96 -0
  441. data/fastlane_core/lib/fastlane_core/cert_checker.rb +144 -0
  442. data/fastlane_core/lib/fastlane_core/command_executor.rb +100 -0
  443. data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +103 -0
  444. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +321 -0
  445. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +332 -0
  446. data/fastlane_core/lib/fastlane_core/configuration/configuration_file.rb +182 -0
  447. data/fastlane_core/lib/fastlane_core/core_ext/cfpropertylist.rb +23 -0
  448. data/fastlane_core/lib/fastlane_core/core_ext/shellwords.rb +63 -0
  449. data/fastlane_core/lib/fastlane_core/core_ext/string.rb +17 -0
  450. data/fastlane_core/lib/fastlane_core/device_manager.rb +374 -0
  451. data/fastlane_core/lib/fastlane_core/env.rb +9 -0
  452. data/fastlane_core/lib/fastlane_core/fastlane_folder.rb +72 -0
  453. data/fastlane_core/lib/fastlane_core/fastlane_pty.rb +57 -0
  454. data/fastlane_core/lib/fastlane_core/feature/feature.rb +51 -0
  455. data/fastlane_core/lib/fastlane_core/features.rb +4 -0
  456. data/fastlane_core/lib/fastlane_core/globals.rb +27 -0
  457. data/fastlane_core/lib/fastlane_core/helper.rb +437 -0
  458. data/fastlane_core/lib/fastlane_core/ios_app_identifier_guesser.rb +112 -0
  459. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +63 -0
  460. data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +52 -0
  461. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +595 -0
  462. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +120 -0
  463. data/fastlane_core/lib/fastlane_core/languages.rb +16 -0
  464. data/fastlane_core/lib/fastlane_core/module.rb +31 -0
  465. data/fastlane_core/lib/fastlane_core/pkg_file_analyser.rb +51 -0
  466. data/fastlane_core/lib/fastlane_core/pkg_upload_package_builder.rb +48 -0
  467. data/fastlane_core/lib/fastlane_core/print_table.rb +131 -0
  468. data/fastlane_core/lib/fastlane_core/project.rb +509 -0
  469. data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +124 -0
  470. data/fastlane_core/lib/fastlane_core/string_filters.rb +51 -0
  471. data/fastlane_core/lib/fastlane_core/swag.rb +85 -0
  472. data/fastlane_core/lib/fastlane_core/tag_version.rb +31 -0
  473. data/fastlane_core/lib/fastlane_core/test_parser.rb +107 -0
  474. data/fastlane_core/lib/fastlane_core/ui/disable_colors.rb +17 -0
  475. data/fastlane_core/lib/fastlane_core/ui/errors.rb +1 -0
  476. data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_common_error.rb +19 -0
  477. data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_crash.rb +11 -0
  478. data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_error.rb +25 -0
  479. data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_exception.rb +19 -0
  480. data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_shell_error.rb +11 -0
  481. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +294 -0
  482. data/fastlane_core/lib/fastlane_core/ui/github_issue_inspector_reporter.rb +62 -0
  483. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +159 -0
  484. data/fastlane_core/lib/fastlane_core/ui/interface.rb +205 -0
  485. data/fastlane_core/lib/fastlane_core/ui/ui.rb +26 -0
  486. data/fastlane_core/lib/fastlane_core/update_checker/changelog.rb +37 -0
  487. data/fastlane_core/lib/fastlane_core/update_checker/update_checker.rb +109 -0
  488. data/frameit/README.md +17 -0
  489. data/frameit/lib/assets/empty.png +0 -0
  490. data/frameit/lib/frameit.rb +13 -0
  491. data/frameit/lib/frameit/commands_generator.rb +140 -0
  492. data/frameit/lib/frameit/config_parser.rb +136 -0
  493. data/frameit/lib/frameit/dependency_checker.rb +22 -0
  494. data/frameit/lib/frameit/device.rb +90 -0
  495. data/frameit/lib/frameit/device_types.rb +144 -0
  496. data/frameit/lib/frameit/editor.rb +560 -0
  497. data/frameit/lib/frameit/frame_downloader.rb +85 -0
  498. data/frameit/lib/frameit/mac_editor.rb +35 -0
  499. data/frameit/lib/frameit/module.rb +42 -0
  500. data/frameit/lib/frameit/offsets.rb +28 -0
  501. data/frameit/lib/frameit/options.rb +112 -0
  502. data/frameit/lib/frameit/runner.rb +97 -0
  503. data/frameit/lib/frameit/screenshot.rb +134 -0
  504. data/frameit/lib/frameit/strings_parser.rb +46 -0
  505. data/frameit/lib/frameit/template_finder.rb +45 -0
  506. data/frameit/lib/frameit/trim_box.rb +35 -0
  507. data/gym/README.md +17 -0
  508. data/gym/lib/assets/GymfileTemplate +13 -0
  509. data/gym/lib/assets/GymfileTemplate.swift +13 -0
  510. data/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh +61 -0
  511. data/gym/lib/gym.rb +9 -0
  512. data/gym/lib/gym/code_signing_mapping.rb +210 -0
  513. data/gym/lib/gym/commands_generator.rb +78 -0
  514. data/gym/lib/gym/detect_values.rb +206 -0
  515. data/gym/lib/gym/error_handler.rb +306 -0
  516. data/gym/lib/gym/generators/README.md +1 -0
  517. data/gym/lib/gym/generators/build_command_generator.rb +147 -0
  518. data/gym/lib/gym/generators/package_command_generator.rb +68 -0
  519. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +232 -0
  520. data/gym/lib/gym/manager.rb +22 -0
  521. data/gym/lib/gym/module.rb +74 -0
  522. data/gym/lib/gym/options.rb +286 -0
  523. data/gym/lib/gym/runner.rb +365 -0
  524. data/gym/lib/gym/xcode.rb +27 -0
  525. data/gym/lib/gym/xcodebuild_fixes/README.md +9 -0
  526. data/gym/lib/gym/xcodebuild_fixes/generic_archive_fix.rb +35 -0
  527. data/match/README.md +17 -0
  528. data/match/lib/assets/MatchfileTemplate +11 -0
  529. data/match/lib/assets/MatchfileTemplate.swift +9 -0
  530. data/match/lib/assets/READMETemplate.md +59 -0
  531. data/match/lib/match.rb +14 -0
  532. data/match/lib/match/change_password.rb +53 -0
  533. data/match/lib/match/commands_generator.rb +190 -0
  534. data/match/lib/match/encryption.rb +49 -0
  535. data/match/lib/match/encryption/interface.rb +17 -0
  536. data/match/lib/match/encryption/openssl.rb +161 -0
  537. data/match/lib/match/generator.rb +122 -0
  538. data/match/lib/match/importer.rb +157 -0
  539. data/match/lib/match/migrate.rb +109 -0
  540. data/match/lib/match/module.rb +32 -0
  541. data/match/lib/match/nuke.rb +350 -0
  542. data/match/lib/match/options.rb +315 -0
  543. data/match/lib/match/runner.rb +369 -0
  544. data/match/lib/match/setup.rb +40 -0
  545. data/match/lib/match/spaceship_ensure.rb +97 -0
  546. data/match/lib/match/storage.rb +46 -0
  547. data/match/lib/match/storage/git_storage.rb +250 -0
  548. data/match/lib/match/storage/google_cloud_storage.rb +382 -0
  549. data/match/lib/match/storage/interface.rb +119 -0
  550. data/match/lib/match/storage/s3_storage.rb +205 -0
  551. data/match/lib/match/table_printer.rb +51 -0
  552. data/match/lib/match/utils.rb +75 -0
  553. data/pem/README.md +17 -0
  554. data/pem/lib/pem.rb +4 -0
  555. data/pem/lib/pem/commands_generator.rb +47 -0
  556. data/pem/lib/pem/manager.rb +112 -0
  557. data/pem/lib/pem/module.rb +19 -0
  558. data/pem/lib/pem/options.rb +103 -0
  559. data/pilot/README.md +17 -0
  560. data/pilot/lib/pilot.rb +9 -0
  561. data/pilot/lib/pilot/build_manager.rb +546 -0
  562. data/pilot/lib/pilot/commands_generator.rb +174 -0
  563. data/pilot/lib/pilot/features.rb +0 -0
  564. data/pilot/lib/pilot/manager.rb +90 -0
  565. data/pilot/lib/pilot/module.rb +11 -0
  566. data/pilot/lib/pilot/options.rb +303 -0
  567. data/pilot/lib/pilot/tester_exporter.rb +58 -0
  568. data/pilot/lib/pilot/tester_importer.rb +53 -0
  569. data/pilot/lib/pilot/tester_manager.rb +168 -0
  570. data/pilot/lib/pilot/tester_util.rb +0 -0
  571. data/precheck/README.md +17 -0
  572. data/precheck/lib/assets/PrecheckfileTemplate +27 -0
  573. data/precheck/lib/assets/PrecheckfileTemplate.swift +19 -0
  574. data/precheck/lib/precheck.rb +3 -0
  575. data/precheck/lib/precheck/commands_generator.rb +74 -0
  576. data/precheck/lib/precheck/item_to_check.rb +58 -0
  577. data/precheck/lib/precheck/module.rb +21 -0
  578. data/precheck/lib/precheck/options.rb +104 -0
  579. data/precheck/lib/precheck/rule.rb +171 -0
  580. data/precheck/lib/precheck/rule_check_result.rb +19 -0
  581. data/precheck/lib/precheck/rule_processor.rb +265 -0
  582. data/precheck/lib/precheck/rules/abstract_text_match_rule.rb +80 -0
  583. data/precheck/lib/precheck/rules/all.rb +1 -0
  584. data/precheck/lib/precheck/rules/copyright_date_rule.rb +37 -0
  585. data/precheck/lib/precheck/rules/curse_words_rule.rb +62 -0
  586. data/precheck/lib/precheck/rules/custom_text_rule.rb +35 -0
  587. data/precheck/lib/precheck/rules/free_stuff_iap_rule.rb +31 -0
  588. data/precheck/lib/precheck/rules/future_functionality_rule.rb +33 -0
  589. data/precheck/lib/precheck/rules/negative_apple_sentiment_rule.rb +37 -0
  590. data/precheck/lib/precheck/rules/other_platforms_rule.rb +43 -0
  591. data/precheck/lib/precheck/rules/placeholder_words_rule.rb +31 -0
  592. data/precheck/lib/precheck/rules/rules_data/curse_word_hashes/en_us.txt +349 -0
  593. data/precheck/lib/precheck/rules/test_words_rule.rb +30 -0
  594. data/precheck/lib/precheck/rules/unreachable_urls_rule.rb +47 -0
  595. data/precheck/lib/precheck/runner.rb +197 -0
  596. data/produce/README.md +17 -0
  597. data/produce/lib/produce.rb +6 -0
  598. data/produce/lib/produce/available_default_languages.rb +51 -0
  599. data/produce/lib/produce/cloud_container.rb +82 -0
  600. data/produce/lib/produce/commands_generator.rb +236 -0
  601. data/produce/lib/produce/developer_center.rb +143 -0
  602. data/produce/lib/produce/group.rb +90 -0
  603. data/produce/lib/produce/itunes_connect.rb +139 -0
  604. data/produce/lib/produce/manager.rb +15 -0
  605. data/produce/lib/produce/merchant.rb +121 -0
  606. data/produce/lib/produce/module.rb +14 -0
  607. data/produce/lib/produce/options.rb +184 -0
  608. data/produce/lib/produce/service.rb +319 -0
  609. data/scan/README.md +17 -0
  610. data/scan/lib/assets/ScanfileTemplate +16 -0
  611. data/scan/lib/assets/ScanfileTemplate.swift +13 -0
  612. data/scan/lib/scan.rb +10 -0
  613. data/scan/lib/scan/commands_generator.rb +78 -0
  614. data/scan/lib/scan/detect_values.rb +224 -0
  615. data/scan/lib/scan/error_handler.rb +57 -0
  616. data/scan/lib/scan/manager.rb +38 -0
  617. data/scan/lib/scan/module.rb +32 -0
  618. data/scan/lib/scan/options.rb +445 -0
  619. data/scan/lib/scan/runner.rb +197 -0
  620. data/scan/lib/scan/slack_poster.rb +60 -0
  621. data/scan/lib/scan/test_command_generator.rb +174 -0
  622. data/scan/lib/scan/test_result_parser.rb +33 -0
  623. data/scan/lib/scan/xcpretty_reporter_options_generator.rb +85 -0
  624. data/screengrab/README.md +17 -0
  625. data/screengrab/lib/assets/ScreengrabfileTemplate +15 -0
  626. data/screengrab/lib/assets/ScreengrabfileTemplate.swift +15 -0
  627. data/screengrab/lib/screengrab.rb +7 -0
  628. data/screengrab/lib/screengrab/android_environment.rb +91 -0
  629. data/screengrab/lib/screengrab/commands_generator.rb +70 -0
  630. data/screengrab/lib/screengrab/dependency_checker.rb +58 -0
  631. data/screengrab/lib/screengrab/detect_values.rb +16 -0
  632. data/screengrab/lib/screengrab/module.rb +26 -0
  633. data/screengrab/lib/screengrab/options.rb +148 -0
  634. data/screengrab/lib/screengrab/page.html.erb +190 -0
  635. data/screengrab/lib/screengrab/reports_generator.rb +36 -0
  636. data/screengrab/lib/screengrab/runner.rb +449 -0
  637. data/screengrab/lib/screengrab/setup.rb +24 -0
  638. data/sigh/README.md +17 -0
  639. data/sigh/lib/assets/resign.sh +909 -0
  640. data/sigh/lib/sigh.rb +4 -0
  641. data/sigh/lib/sigh/commands_generator.rb +154 -0
  642. data/sigh/lib/sigh/download_all.rb +112 -0
  643. data/sigh/lib/sigh/local_manage.rb +145 -0
  644. data/sigh/lib/sigh/manager.rb +47 -0
  645. data/sigh/lib/sigh/module.rb +42 -0
  646. data/sigh/lib/sigh/options.rb +187 -0
  647. data/sigh/lib/sigh/repair.rb +34 -0
  648. data/sigh/lib/sigh/resign.rb +220 -0
  649. data/sigh/lib/sigh/runner.rb +402 -0
  650. data/snapshot/README.md +17 -0
  651. data/snapshot/lib/assets/SnapfileTemplate +37 -0
  652. data/snapshot/lib/assets/SnapfileTemplate.swift +41 -0
  653. data/snapshot/lib/assets/SnapshotHelper.swift +301 -0
  654. data/snapshot/lib/assets/SnapshotHelperXcode8.swift +172 -0
  655. data/snapshot/lib/snapshot.rb +19 -0
  656. data/snapshot/lib/snapshot/collector.rb +140 -0
  657. data/snapshot/lib/snapshot/commands_generator.rb +115 -0
  658. data/snapshot/lib/snapshot/dependency_checker.rb +69 -0
  659. data/snapshot/lib/snapshot/detect_values.rb +86 -0
  660. data/snapshot/lib/snapshot/error_handler.rb +24 -0
  661. data/snapshot/lib/snapshot/fixes/README.md +5 -0
  662. data/snapshot/lib/snapshot/fixes/hardware_keyboard_fix.rb +27 -0
  663. data/snapshot/lib/snapshot/fixes/simulator_shared_pasteboard.rb +16 -0
  664. data/snapshot/lib/snapshot/fixes/simulator_zoom_fix.rb +27 -0
  665. data/snapshot/lib/snapshot/latest_os_version.rb +34 -0
  666. data/snapshot/lib/snapshot/module.rb +44 -0
  667. data/snapshot/lib/snapshot/options.rb +290 -0
  668. data/snapshot/lib/snapshot/page.html.erb +285 -0
  669. data/snapshot/lib/snapshot/reports_generator.rb +139 -0
  670. data/snapshot/lib/snapshot/reset_simulators.rb +122 -0
  671. data/snapshot/lib/snapshot/runner.rb +146 -0
  672. data/snapshot/lib/snapshot/screenshot_flatten.rb +20 -0
  673. data/snapshot/lib/snapshot/screenshot_rotate.rb +36 -0
  674. data/snapshot/lib/snapshot/setup.rb +58 -0
  675. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +62 -0
  676. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +219 -0
  677. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +200 -0
  678. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_xcode_8.rb +113 -0
  679. data/snapshot/lib/snapshot/test_command_generator.rb +108 -0
  680. data/snapshot/lib/snapshot/test_command_generator_base.rb +128 -0
  681. data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +70 -0
  682. data/snapshot/lib/snapshot/update.rb +38 -0
  683. data/spaceship/README.md +183 -0
  684. data/spaceship/lib/assets/displayFamilies.json +181 -0
  685. data/spaceship/lib/assets/languageMapping.json +306 -0
  686. data/spaceship/lib/assets/languageMappingReadable.json +30 -0
  687. data/spaceship/lib/spaceship.rb +30 -0
  688. data/spaceship/lib/spaceship/base.rb +310 -0
  689. data/spaceship/lib/spaceship/client.rb +913 -0
  690. data/spaceship/lib/spaceship/commands_generator.rb +53 -0
  691. data/spaceship/lib/spaceship/connect_api.rb +116 -0
  692. data/spaceship/lib/spaceship/connect_api/api_client.rb +279 -0
  693. data/spaceship/lib/spaceship/connect_api/client.rb +216 -0
  694. data/spaceship/lib/spaceship/connect_api/file_uploader.rb +99 -0
  695. data/spaceship/lib/spaceship/connect_api/model.rb +172 -0
  696. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +114 -0
  697. data/spaceship/lib/spaceship/connect_api/models/app.rb +388 -0
  698. data/spaceship/lib/spaceship/connect_api/models/app_category.rb +94 -0
  699. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +95 -0
  700. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +39 -0
  701. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +131 -0
  702. data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +100 -0
  703. data/spaceship/lib/spaceship/connect_api/models/app_price.rb +22 -0
  704. data/spaceship/lib/spaceship/connect_api/models/app_price_point.rb +26 -0
  705. data/spaceship/lib/spaceship/connect_api/models/app_price_tier.rb +12 -0
  706. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +187 -0
  707. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +153 -0
  708. data/spaceship/lib/spaceship/connect_api/models/app_store_review_attachment.rb +71 -0
  709. data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +51 -0
  710. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +217 -0
  711. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +85 -0
  712. data/spaceship/lib/spaceship/connect_api/models/app_store_version_phased_release.rb +57 -0
  713. data/spaceship/lib/spaceship/connect_api/models/app_store_version_release_request.rb +12 -0
  714. data/spaceship/lib/spaceship/connect_api/models/app_store_version_submission.rb +26 -0
  715. data/spaceship/lib/spaceship/connect_api/models/beta_app_localization.rb +28 -0
  716. data/spaceship/lib/spaceship/connect_api/models/beta_app_review_detail.rb +32 -0
  717. data/spaceship/lib/spaceship/connect_api/models/beta_app_review_submission.rb +26 -0
  718. data/spaceship/lib/spaceship/connect_api/models/beta_build_localization.rb +20 -0
  719. data/spaceship/lib/spaceship/connect_api/models/beta_build_metric.rb +24 -0
  720. data/spaceship/lib/spaceship/connect_api/models/beta_feedback.rb +75 -0
  721. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +41 -0
  722. data/spaceship/lib/spaceship/connect_api/models/beta_screenshot.rb +18 -0
  723. data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +57 -0
  724. data/spaceship/lib/spaceship/connect_api/models/beta_tester_metric.rb +44 -0
  725. data/spaceship/lib/spaceship/connect_api/models/build.rb +172 -0
  726. data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +61 -0
  727. data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +36 -0
  728. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +58 -0
  729. data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +71 -0
  730. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +102 -0
  731. data/spaceship/lib/spaceship/connect_api/models/custom_app_organization.rb +43 -0
  732. data/spaceship/lib/spaceship/connect_api/models/custom_app_user.rb +41 -0
  733. data/spaceship/lib/spaceship/connect_api/models/device.rb +58 -0
  734. data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +41 -0
  735. data/spaceship/lib/spaceship/connect_api/models/pre_release_version.rb +20 -0
  736. data/spaceship/lib/spaceship/connect_api/models/profile.rb +97 -0
  737. data/spaceship/lib/spaceship/connect_api/models/reset_ratings_request.rb +26 -0
  738. data/spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb +64 -0
  739. data/spaceship/lib/spaceship/connect_api/models/territory.rb +27 -0
  740. data/spaceship/lib/spaceship/connect_api/models/user.rb +51 -0
  741. data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +59 -0
  742. data/spaceship/lib/spaceship/connect_api/provisioning/client.rb +92 -0
  743. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +143 -0
  744. data/spaceship/lib/spaceship/connect_api/response.rb +67 -0
  745. data/spaceship/lib/spaceship/connect_api/spaceship.rb +102 -0
  746. data/spaceship/lib/spaceship/connect_api/testflight/client.rb +24 -0
  747. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +391 -0
  748. data/spaceship/lib/spaceship/connect_api/token.rb +102 -0
  749. data/spaceship/lib/spaceship/connect_api/token_refresh_middleware.rb +24 -0
  750. data/spaceship/lib/spaceship/connect_api/tunes/client.rb +24 -0
  751. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +1045 -0
  752. data/spaceship/lib/spaceship/connect_api/users/client.rb +24 -0
  753. data/spaceship/lib/spaceship/connect_api/users/users.rb +80 -0
  754. data/spaceship/lib/spaceship/du/du_client.rb +138 -0
  755. data/spaceship/lib/spaceship/du/upload_file.rb +58 -0
  756. data/spaceship/lib/spaceship/du/utilities.rb +99 -0
  757. data/spaceship/lib/spaceship/errors.rb +82 -0
  758. data/spaceship/lib/spaceship/globals.rb +12 -0
  759. data/spaceship/lib/spaceship/helper/net_http_generic_request.rb +20 -0
  760. data/spaceship/lib/spaceship/helper/plist_middleware.rb +16 -0
  761. data/spaceship/lib/spaceship/helper/rels_middleware.rb +28 -0
  762. data/spaceship/lib/spaceship/launcher.rb +99 -0
  763. data/spaceship/lib/spaceship/module.rb +8 -0
  764. data/spaceship/lib/spaceship/playground.rb +75 -0
  765. data/spaceship/lib/spaceship/portal/app.rb +201 -0
  766. data/spaceship/lib/spaceship/portal/app_group.rb +73 -0
  767. data/spaceship/lib/spaceship/portal/app_service.rb +87 -0
  768. data/spaceship/lib/spaceship/portal/certificate.rb +365 -0
  769. data/spaceship/lib/spaceship/portal/cloud_container.rb +74 -0
  770. data/spaceship/lib/spaceship/portal/device.rb +191 -0
  771. data/spaceship/lib/spaceship/portal/invite.rb +53 -0
  772. data/spaceship/lib/spaceship/portal/key.rb +101 -0
  773. data/spaceship/lib/spaceship/portal/legacy_wrapper.rb +21 -0
  774. data/spaceship/lib/spaceship/portal/merchant.rb +86 -0
  775. data/spaceship/lib/spaceship/portal/passbook.rb +78 -0
  776. data/spaceship/lib/spaceship/portal/person.rb +62 -0
  777. data/spaceship/lib/spaceship/portal/persons.rb +67 -0
  778. data/spaceship/lib/spaceship/portal/portal.rb +17 -0
  779. data/spaceship/lib/spaceship/portal/portal_base.rb +16 -0
  780. data/spaceship/lib/spaceship/portal/portal_client.rb +862 -0
  781. data/spaceship/lib/spaceship/portal/provisioning_profile.rb +559 -0
  782. data/spaceship/lib/spaceship/portal/provisioning_profile_template.rb +52 -0
  783. data/spaceship/lib/spaceship/portal/spaceship.rb +154 -0
  784. data/spaceship/lib/spaceship/portal/ui/select_team.rb +116 -0
  785. data/spaceship/lib/spaceship/portal/website_push.rb +88 -0
  786. data/spaceship/lib/spaceship/provider.rb +13 -0
  787. data/spaceship/lib/spaceship/spaceauth_runner.rb +74 -0
  788. data/spaceship/lib/spaceship/stats_middleware.rb +65 -0
  789. data/spaceship/lib/spaceship/test_flight.rb +10 -0
  790. data/spaceship/lib/spaceship/test_flight/app_test_info.rb +40 -0
  791. data/spaceship/lib/spaceship/test_flight/base.rb +39 -0
  792. data/spaceship/lib/spaceship/test_flight/beta_review_info.rb +19 -0
  793. data/spaceship/lib/spaceship/test_flight/build.rb +242 -0
  794. data/spaceship/lib/spaceship/test_flight/build_trains.rb +50 -0
  795. data/spaceship/lib/spaceship/test_flight/client.rb +361 -0
  796. data/spaceship/lib/spaceship/test_flight/export_compliance.rb +12 -0
  797. data/spaceship/lib/spaceship/test_flight/group.rb +131 -0
  798. data/spaceship/lib/spaceship/test_flight/test_info.rb +56 -0
  799. data/spaceship/lib/spaceship/test_flight/tester.rb +136 -0
  800. data/spaceship/lib/spaceship/tunes/app_analytics.rb +168 -0
  801. data/spaceship/lib/spaceship/tunes/app_details.rb +147 -0
  802. data/spaceship/lib/spaceship/tunes/app_image.rb +51 -0
  803. data/spaceship/lib/spaceship/tunes/app_ratings.rb +58 -0
  804. data/spaceship/lib/spaceship/tunes/app_review.rb +55 -0
  805. data/spaceship/lib/spaceship/tunes/app_review_attachment.rb +49 -0
  806. data/spaceship/lib/spaceship/tunes/app_screenshot.rb +12 -0
  807. data/spaceship/lib/spaceship/tunes/app_status.rb +63 -0
  808. data/spaceship/lib/spaceship/tunes/app_submission.rb +161 -0
  809. data/spaceship/lib/spaceship/tunes/app_trailer.rb +64 -0
  810. data/spaceship/lib/spaceship/tunes/app_version.rb +970 -0
  811. data/spaceship/lib/spaceship/tunes/app_version_common.rb +35 -0
  812. data/spaceship/lib/spaceship/tunes/app_version_generated_promocodes.rb +28 -0
  813. data/spaceship/lib/spaceship/tunes/app_version_history.rb +52 -0
  814. data/spaceship/lib/spaceship/tunes/app_version_promocodes.rb +27 -0
  815. data/spaceship/lib/spaceship/tunes/app_version_ref.rb +15 -0
  816. data/spaceship/lib/spaceship/tunes/app_version_states_history.rb +27 -0
  817. data/spaceship/lib/spaceship/tunes/application.rb +453 -0
  818. data/spaceship/lib/spaceship/tunes/availability.rb +164 -0
  819. data/spaceship/lib/spaceship/tunes/b2b_organization.rb +50 -0
  820. data/spaceship/lib/spaceship/tunes/b2b_user.rb +30 -0
  821. data/spaceship/lib/spaceship/tunes/build.rb +263 -0
  822. data/spaceship/lib/spaceship/tunes/build_details.rb +184 -0
  823. data/spaceship/lib/spaceship/tunes/build_train.rb +181 -0
  824. data/spaceship/lib/spaceship/tunes/developer_response.rb +23 -0
  825. data/spaceship/lib/spaceship/tunes/device_type.rb +17 -0
  826. data/spaceship/lib/spaceship/tunes/display_family.rb +84 -0
  827. data/spaceship/lib/spaceship/tunes/errors.rb +17 -0
  828. data/spaceship/lib/spaceship/tunes/iap.rb +168 -0
  829. data/spaceship/lib/spaceship/tunes/iap_detail.rb +264 -0
  830. data/spaceship/lib/spaceship/tunes/iap_families.rb +68 -0
  831. data/spaceship/lib/spaceship/tunes/iap_family_details.rb +90 -0
  832. data/spaceship/lib/spaceship/tunes/iap_family_list.rb +28 -0
  833. data/spaceship/lib/spaceship/tunes/iap_list.rb +76 -0
  834. data/spaceship/lib/spaceship/tunes/iap_status.rb +56 -0
  835. data/spaceship/lib/spaceship/tunes/iap_subscription_pricing_info.rb +46 -0
  836. data/spaceship/lib/spaceship/tunes/iap_subscription_pricing_tier.rb +25 -0
  837. data/spaceship/lib/spaceship/tunes/iap_type.rb +45 -0
  838. data/spaceship/lib/spaceship/tunes/language_converter.rb +65 -0
  839. data/spaceship/lib/spaceship/tunes/language_item.rb +61 -0
  840. data/spaceship/lib/spaceship/tunes/legacy_wrapper.rb +13 -0
  841. data/spaceship/lib/spaceship/tunes/member.rb +84 -0
  842. data/spaceship/lib/spaceship/tunes/members.rb +35 -0
  843. data/spaceship/lib/spaceship/tunes/pricing_info.rb +42 -0
  844. data/spaceship/lib/spaceship/tunes/pricing_tier.rb +25 -0
  845. data/spaceship/lib/spaceship/tunes/sandbox_tester.rb +74 -0
  846. data/spaceship/lib/spaceship/tunes/spaceship.rb +39 -0
  847. data/spaceship/lib/spaceship/tunes/territory.rb +39 -0
  848. data/spaceship/lib/spaceship/tunes/transit_app_file.rb +23 -0
  849. data/spaceship/lib/spaceship/tunes/tunes.rb +35 -0
  850. data/spaceship/lib/spaceship/tunes/tunes_base.rb +17 -0
  851. data/spaceship/lib/spaceship/tunes/tunes_client.rb +1644 -0
  852. data/spaceship/lib/spaceship/tunes/user_detail.rb +15 -0
  853. data/spaceship/lib/spaceship/tunes/version_set.rb +26 -0
  854. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +346 -0
  855. data/spaceship/lib/spaceship/ui.rb +27 -0
  856. data/supply/README.md +17 -0
  857. data/supply/lib/supply.rb +53 -0
  858. data/supply/lib/supply/apk_listing.rb +14 -0
  859. data/supply/lib/supply/client.rb +551 -0
  860. data/supply/lib/supply/commands_generator.rb +67 -0
  861. data/supply/lib/supply/languages.rb +88 -0
  862. data/supply/lib/supply/listing.rb +32 -0
  863. data/supply/lib/supply/options.rb +324 -0
  864. data/supply/lib/supply/reader.rb +41 -0
  865. data/supply/lib/supply/release_listing.rb +18 -0
  866. data/supply/lib/supply/setup.rb +122 -0
  867. data/supply/lib/supply/uploader.rb +480 -0
  868. metadata +1832 -0
@@ -0,0 +1,120 @@
1
+ require_relative 'helper'
2
+ require 'open3'
3
+ require 'security'
4
+
5
+ module FastlaneCore
6
+ class KeychainImporter
7
+ def self.import_file(path, keychain_path, keychain_password: nil, certificate_password: "", skip_set_partition_list: false, output: FastlaneCore::Globals.verbose?)
8
+ UI.user_error!("Could not find file '#{path}'") unless File.exist?(path)
9
+
10
+ command = "security import #{path.shellescape} -k '#{keychain_path.shellescape}'"
11
+ command << " -P #{certificate_password.shellescape}"
12
+ command << " -T /usr/bin/codesign" # to not be asked for permission when running a tool like `gym` (before Sierra)
13
+ command << " -T /usr/bin/security"
14
+ command << " -T /usr/bin/productbuild" # to not be asked for permission when using an installer cert for macOS
15
+ command << " 1> /dev/null" unless output
16
+
17
+ UI.command(command) if output
18
+ Open3.popen3(command) do |stdin, stdout, stderr, thrd|
19
+ UI.command_output(stdout.read.to_s) if output
20
+
21
+ # Set partition list only if success since it can be a time consuming process if a lot of keys are installed
22
+ if thrd.value.success? && !skip_set_partition_list
23
+ keychain_password ||= resolve_keychain_password(keychain_path)
24
+ set_partition_list(path, keychain_path, keychain_password: keychain_password, output: output)
25
+ else
26
+ # Output verbose if file is already installed since not an error otherwise we will show the whole error
27
+ err = stderr.read.to_s.strip
28
+ if err.include?("SecKeychainItemImport") && err.include?("The specified item already exists in the keychain")
29
+ UI.verbose("'#{File.basename(path)}' is already installed on this machine")
30
+ else
31
+ UI.error(err)
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ def self.set_partition_list(path, keychain_path, keychain_password: nil, output: FastlaneCore::Globals.verbose?)
38
+ # When security supports partition lists, also add the partition IDs
39
+ # See https://openradar.appspot.com/28524119
40
+ if Helper.backticks('security -h | grep set-key-partition-list', print: false).length > 0
41
+ command = "security set-key-partition-list"
42
+ command << " -S apple-tool:,apple:,codesign:"
43
+ command << " -s" # This is a needed in Catalina to prevent "security: SecKeychainItemCopyAccess: A missing value was detected."
44
+ command << " -k #{keychain_password.to_s.shellescape}"
45
+ command << " #{keychain_path.shellescape}"
46
+ command << " 1> /dev/null" # always disable stdout. This can be very verbose, and leak potentially sensitive info
47
+
48
+ # Showing loading indicator as this can take some time if a lot of keys installed
49
+ Helper.show_loading_indicator("Setting key partition list... (this can take a minute if there are a lot of keys installed)")
50
+
51
+ UI.command(command) if output
52
+ Open3.popen3(command) do |stdin, stdout, stderr, thrd|
53
+ unless thrd.value.success?
54
+ err = stderr.read.to_s.strip
55
+
56
+ # Inform user when no/wrong password was used as its needed to prevent UI permission popup from Xcode when signing
57
+ if err.include?("SecKeychainItemSetAccessWithPassword")
58
+ keychain_name = File.basename(keychain_path, ".*")
59
+ Security::InternetPassword.delete(server: server_name(keychain_name))
60
+
61
+ UI.important("")
62
+ UI.important("Could not configure imported keychain item (certificate) to prevent UI permission popup when code signing\n" \
63
+ "Check if you supplied the correct `keychain_password` for keychain: `#{keychain_path}`\n" \
64
+ "#{err}")
65
+ UI.important("")
66
+ UI.important("Please look at the following docs to see how to set a keychain password:")
67
+ UI.important(" - https://docs.fastlane.tools/actions/sync_code_signing")
68
+ UI.important(" - https://docs.fastlane.tools/actions/get_certificates")
69
+ else
70
+ UI.error(err)
71
+ end
72
+ end
73
+ end
74
+
75
+ # Hiding after Open3 finishes
76
+ Helper.hide_loading_indicator
77
+
78
+ end
79
+ end
80
+
81
+ # https://github.com/fastlane/fastlane/issues/14196
82
+ # Keychain password is needed to set the partition list to
83
+ # prevent Xcode from prompting dialog for keychain password when signing
84
+ # 1. Uses keychain password from login keychain if found
85
+ # 2. Prompts user for keychain password and stores it in login keychain for user later
86
+ def self.resolve_keychain_password(keychain_path)
87
+ keychain_name = File.basename(keychain_path, ".*")
88
+ server = server_name(keychain_name)
89
+
90
+ # Attempt to find password in keychain for keychain
91
+ item = Security::InternetPassword.find(server: server)
92
+ if item
93
+ keychain_password = item.password
94
+ UI.important("Using keychain password from keychain item #{server} in #{keychain_path}")
95
+ end
96
+
97
+ if keychain_password.nil?
98
+ if UI.interactive?
99
+ UI.important("Enter the password for #{keychain_path}")
100
+ UI.important("This passphrase will be stored in your local keychain with the name #{server} and used in future runs")
101
+ UI.important("This prompt can be avoided by specifying the 'keychain_password' option or 'MATCH_KEYCHAIN_PASSWORD' environment variable")
102
+ keychain_password = FastlaneCore::Helper.ask_password(message: "Password for #{keychain_name} keychain: ", confirm: true)
103
+ Security::InternetPassword.add(server, "", keychain_password)
104
+ else
105
+ UI.important("Keychain password for #{keychain_path} was not specified and not found in your keychain. Specify the 'keychain_password' option to prevent the UI permission popup when code signing")
106
+ keychain_password = ""
107
+ end
108
+ end
109
+
110
+ return keychain_password
111
+ end
112
+
113
+ # server name used for accessing the macOS keychain
114
+ def self.server_name(keychain_name)
115
+ ["fastlane", "keychain", keychain_name].join("_")
116
+ end
117
+
118
+ private_class_method :server_name
119
+ end
120
+ end
@@ -0,0 +1,16 @@
1
+ module FastlaneCore
2
+ module Languages
3
+ # These are all the languages which are available to use to upload app metadata and screenshots
4
+
5
+ # The old format which was used until August 2015 (good old times)
6
+ ALL_LANGUAGES_LEGACY = ["da-DK", "de-DE", "el-GR", "en-AU", "en-CA", "en-GB", "en-US", "es-ES", "es-MX", "fi-FI", "fr-CA", "fr-FR", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "no-NO", "pt-BR", "pt-PT", "ru-RU", "sv-SE", "th-TH", "tr-TR", "vi-VI", "cmn-Hans", "cmn-Hant"]
7
+
8
+ # The new format used from September 2015 on
9
+ # This was generated from `Spaceship::Tunes.client.available_languages.sort`
10
+ # Updates should also be made to:
11
+ # - produce/lib/produce/available_default_languages.rb
12
+ # - spaceship/lib/assets/languageMapping.json
13
+ # See pull request for example: https://github.com/fastlane/fastlane/pull/14110
14
+ ALL_LANGUAGES = ["ar-SA", "ca", "cs", "da", "de-DE", "el", "en-AU", "en-CA", "en-GB", "en-US", "es-ES", "es-MX", "fi", "fr-CA", "fr-FR", "he", "hi", "hr", "hu", "id", "it", "ja", "ko", "ms", "nl-NL", "no", "pl", "pt-BR", "pt-PT", "ro", "ru", "sk", "sv", "th", "tr", "uk", "vi", "zh-Hans", "zh-Hant"]
15
+ end
16
+ end
@@ -0,0 +1,31 @@
1
+ require 'fastlane/boolean'
2
+
3
+ require_relative 'analytics/analytics_session'
4
+
5
+ module FastlaneCore
6
+ ROOT = Pathname.new(File.expand_path('../../..', __FILE__))
7
+ Boolean = Fastlane::Boolean
8
+
9
+ # Session is used to report usage metrics.
10
+ # If you opt out, we will not send anything.
11
+ # You can confirm this by observing how we use the environment variable: FASTLANE_OPT_OUT_USAGE
12
+ # Specifically, in AnalyticsSession.finalize_session
13
+ # Learn more at https://docs.fastlane.tools/#metrics
14
+ def self.session
15
+ @session ||= AnalyticsSession.new
16
+ end
17
+
18
+ def self.reset_session
19
+ @session = nil
20
+ end
21
+
22
+ # A directory that's being used to user-wide fastlane configs
23
+ # This directory is also used for the bundled fastlane
24
+ # Since we don't want to access FastlaneCore from spaceship
25
+ # this method is duplicated in spaceship/client.rb
26
+ def self.fastlane_user_dir
27
+ path = File.expand_path(File.join(Dir.home, ".fastlane"))
28
+ FileUtils.mkdir_p(path) unless File.directory?(path)
29
+ return path
30
+ end
31
+ end
@@ -0,0 +1,51 @@
1
+ require 'rexml/document'
2
+
3
+ require_relative 'helper'
4
+
5
+ module FastlaneCore
6
+ class PkgFileAnalyser
7
+ def self.fetch_app_identifier(path)
8
+ xml = self.fetch_distribution_xml_file(path)
9
+ return xml.elements['installer-gui-script/product'].attributes['id'] if xml
10
+ return nil
11
+ end
12
+
13
+ # Fetches the app version from the given pkg file.
14
+ def self.fetch_app_version(path)
15
+ xml = self.fetch_distribution_xml_file(path)
16
+ return xml.elements['installer-gui-script/product'].attributes['version'] if xml
17
+ return nil
18
+ end
19
+
20
+ # Fetches the app version from the given pkg file.
21
+ def self.fetch_app_build(path)
22
+ xml = self.fetch_distribution_xml_file(path)
23
+ return xml.elements['installer-gui-script/pkg-ref/bundle-version/bundle'].attributes['CFBundleVersion'] if xml
24
+ return nil
25
+ end
26
+
27
+ def self.fetch_distribution_xml_file(path)
28
+ Dir.mktmpdir do |dir|
29
+ Helper.backticks("xar -C #{dir.shellescape} -xf #{path.shellescape}")
30
+
31
+ Dir.foreach(dir) do |file|
32
+ next unless file.include?('Distribution')
33
+
34
+ begin
35
+ content = File.open(File.join(dir, file))
36
+ xml = REXML::Document.new(content)
37
+
38
+ if xml.elements['installer-gui-script/product']
39
+ return xml
40
+ end
41
+ rescue => ex
42
+ UI.error(ex)
43
+ UI.error("Error parsing *.pkg distribution xml #{File.join(dir, file)}")
44
+ end
45
+ end
46
+
47
+ nil
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,48 @@
1
+ require 'digest/md5'
2
+
3
+ require_relative 'globals'
4
+ require_relative 'ui/ui'
5
+ require_relative 'module'
6
+
7
+ module FastlaneCore
8
+ # Builds a package for the pkg ready to be uploaded with the iTunes Transporter
9
+ class PkgUploadPackageBuilder
10
+ METADATA_FILE_NAME = 'metadata.xml'
11
+
12
+ attr_accessor :package_path
13
+
14
+ def generate(app_id: nil, pkg_path: nil, package_path: nil, platform: "osx")
15
+ self.package_path = File.join(package_path, "#{app_id}.itmsp")
16
+ FileUtils.rm_rf(self.package_path) if File.directory?(self.package_path)
17
+ FileUtils.mkdir_p(self.package_path)
18
+
19
+ pkg_path = copy_pkg(pkg_path)
20
+ @data = {
21
+ apple_id: app_id,
22
+ file_size: File.size(pkg_path),
23
+ ipa_path: File.basename(pkg_path), # this is only the base name as the ipa is inside the package
24
+ md5: Digest::MD5.hexdigest(File.read(pkg_path)),
25
+ archive_type: 'product-archive',
26
+ platform: platform
27
+ }
28
+
29
+ xml_path = File.join(FastlaneCore::ROOT, 'lib/assets/XMLTemplate.xml.erb')
30
+ xml = ERB.new(File.read(xml_path)).result(binding) # https://web.archive.org/web/20160430190141/www.rrn.dk/rubys-erb-templating-system
31
+
32
+ File.write(File.join(self.package_path, METADATA_FILE_NAME), xml)
33
+ UI.success("Wrote XML data to '#{self.package_path}'") if FastlaneCore::Globals.verbose?
34
+
35
+ package_path
36
+ end
37
+
38
+ private
39
+
40
+ def copy_pkg(pkg_path)
41
+ ipa_file_name = Digest::MD5.hexdigest(pkg_path)
42
+ resulting_path = File.join(self.package_path, "#{ipa_file_name}.pkg")
43
+ FileUtils.cp(pkg_path, resulting_path)
44
+
45
+ resulting_path
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,131 @@
1
+ require_relative 'configuration/configuration'
2
+ require_relative 'helper'
3
+
4
+ module FastlaneCore
5
+ class PrintTable
6
+ class << self
7
+ # This method prints out all the user inputs in a nice table. Useful to summarize the run
8
+ # You can pass an array to `hide_keys` if you don't want certain elements to show up (symbols or strings)
9
+ # You can pass an array to `mask_keys` if you want to mask certain elements (symbols or strings)
10
+ def print_values(config: nil, title: nil, hide_keys: [], mask_keys: [], transform: :newline)
11
+ require 'terminal-table'
12
+
13
+ options = {}
14
+ unless config.nil?
15
+ if config.kind_of?(FastlaneCore::Configuration)
16
+ # find sensitive options and mask them by default
17
+ config.available_options.each do |config_item|
18
+ if config_item.sensitive
19
+ mask_keys << config_item.key.to_s
20
+ end
21
+ end
22
+ options = config.values(ask: false)
23
+ else
24
+ options = config
25
+ end
26
+ end
27
+ rows = self.collect_rows(options: options, hide_keys: hide_keys.map(&:to_s), mask_keys: mask_keys.map(&:to_s), prefix: '')
28
+
29
+ params = {}
30
+
31
+ if transform
32
+ params[:rows] = transform_output(rows, transform: transform)
33
+ else
34
+ params[:rows] = rows
35
+ end
36
+
37
+ params[:title] = title.green if title
38
+
39
+ puts("")
40
+ puts(Terminal::Table.new(params))
41
+ puts("")
42
+
43
+ return params
44
+ end
45
+
46
+ def colorize_array(array, colors)
47
+ value = ""
48
+ array.each do |l|
49
+ colored_line = l
50
+ colored_line = "#{colors.first}#{l}#{colors.last}" if colors.length > 0
51
+ value << colored_line
52
+ value << "\n"
53
+ end
54
+ return value
55
+ end
56
+
57
+ def should_transform?
58
+ if FastlaneCore::Helper.ci? || FastlaneCore::Helper.test?
59
+ return false
60
+ end
61
+ return !FastlaneCore::Env.truthy?("FL_SKIP_TABLE_TRANSFORM")
62
+ end
63
+
64
+ def transform_row(column, transform, max_value_length)
65
+ return column if column.nil? # we want to keep the nil and not convert it to a string
66
+ return column if transform.nil?
67
+
68
+ value = column.to_s.dup
69
+
70
+ if transform == :truncate_middle
71
+ return value.middle_truncate(max_value_length)
72
+ elsif transform == :newline
73
+ # remove all fixed newlines as it may mess up the output
74
+ value.gsub!("\n", " ") if value.kind_of?(String)
75
+ if value.length >= max_value_length
76
+ colors = value.scan(/\e\[.*?m/)
77
+ colors.each { |color| value.gsub!(color, '') }
78
+ lines = value.wordwrap(max_value_length)
79
+ return colorize_array(lines, colors)
80
+ end
81
+ elsif transform
82
+ UI.user_error!("Unknown transform value '#{transform}'")
83
+ end
84
+ return value
85
+ end
86
+
87
+ def transform_output(rows, transform: :newline)
88
+ return rows unless should_transform?
89
+
90
+ require 'fastlane_core/string_filters'
91
+ require 'tty-screen'
92
+
93
+ number_of_cols = TTY::Screen.width
94
+
95
+ col_count = rows.map(&:length).first || 1
96
+
97
+ # -4 per column - as tt adds "| " and " |"
98
+ terminal_table_padding = 4
99
+ max_length = number_of_cols - (col_count * terminal_table_padding)
100
+
101
+ max_value_length = (max_length / col_count) - 1
102
+
103
+ return_array = rows.map do |row|
104
+ row.map do |column|
105
+ transform_row(column, transform, max_value_length)
106
+ end
107
+ end
108
+ return return_array
109
+ end
110
+
111
+ def collect_rows(options: nil, hide_keys: [], mask_keys: [], prefix: '', mask: '********')
112
+ rows = []
113
+
114
+ options.each do |key, value|
115
+ prefixed_key = "#{prefix}#{key}"
116
+ next if value.nil?
117
+ next if value.to_s == ""
118
+ next if hide_keys.include?(prefixed_key)
119
+ value = mask if mask_keys.include?(prefixed_key)
120
+
121
+ if value.respond_to?(:key)
122
+ rows.concat(self.collect_rows(options: value, hide_keys: hide_keys, mask_keys: mask_keys, prefix: "#{prefix}#{key}.", mask: mask))
123
+ else
124
+ rows << [prefixed_key, value]
125
+ end
126
+ end
127
+ rows
128
+ end
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,509 @@
1
+ require_relative 'helper'
2
+ require 'xcodeproj'
3
+ require 'fastlane_core/command_executor'
4
+
5
+ module FastlaneCore
6
+ # Represents an Xcode project
7
+ class Project # rubocop:disable Metrics/ClassLength
8
+ class << self
9
+ # Project discovery
10
+ def detect_projects(config)
11
+ if config[:workspace].to_s.length > 0 && config[:project].to_s.length > 0
12
+ UI.user_error!("You can only pass either a workspace or a project path, not both")
13
+ end
14
+
15
+ return if config[:project].to_s.length > 0
16
+
17
+ if config[:workspace].to_s.length == 0
18
+ workspace = Dir["./*.xcworkspace"]
19
+ if workspace.count > 1
20
+ puts("Select Workspace: ")
21
+ config[:workspace] = choose(*workspace)
22
+ elsif !workspace.first.nil?
23
+ config[:workspace] = workspace.first
24
+ end
25
+ end
26
+
27
+ return if config[:workspace].to_s.length > 0
28
+
29
+ if config[:workspace].to_s.length == 0 && config[:project].to_s.length == 0
30
+ project = Dir["./*.xcodeproj"]
31
+ if project.count > 1
32
+ puts("Select Project: ")
33
+ config[:project] = choose(*project)
34
+ elsif !project.first.nil?
35
+ config[:project] = project.first
36
+ end
37
+ end
38
+
39
+ if config[:workspace].nil? && config[:project].nil?
40
+ select_project(config)
41
+ end
42
+ end
43
+
44
+ def select_project(config)
45
+ loop do
46
+ path = UI.input("Couldn't automatically detect the project file, please provide a path: ")
47
+ if File.directory?(path)
48
+ if path.end_with?(".xcworkspace")
49
+ config[:workspace] = path
50
+ break
51
+ elsif path.end_with?(".xcodeproj")
52
+ config[:project] = path
53
+ break
54
+ else
55
+ UI.error("Path must end with either .xcworkspace or .xcodeproj")
56
+ end
57
+ else
58
+ UI.error("Couldn't find project at path '#{File.expand_path(path)}'")
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ # Path to the project/workspace
65
+ attr_accessor :path
66
+
67
+ # Is this project a workspace?
68
+ attr_accessor :is_workspace
69
+
70
+ # The config object containing the scheme, configuration, etc.
71
+ attr_accessor :options
72
+
73
+ # Should the output of xcodebuild commands be silenced?
74
+ attr_accessor :xcodebuild_list_silent
75
+
76
+ # Should we redirect stderr to /dev/null for xcodebuild commands?
77
+ # Gets rid of annoying plugin info warnings.
78
+ attr_accessor :xcodebuild_suppress_stderr
79
+
80
+ def initialize(options, xcodebuild_list_silent: false, xcodebuild_suppress_stderr: false)
81
+ self.options = options
82
+ self.path = File.expand_path(options[:workspace] || options[:project])
83
+ self.is_workspace = (options[:workspace].to_s.length > 0)
84
+ self.xcodebuild_list_silent = xcodebuild_list_silent
85
+ self.xcodebuild_suppress_stderr = xcodebuild_suppress_stderr
86
+
87
+ if !path || !File.directory?(path)
88
+ UI.user_error!("Could not find project at path '#{path}'")
89
+ end
90
+ end
91
+
92
+ def workspace?
93
+ self.is_workspace
94
+ end
95
+
96
+ def project_name
97
+ if is_workspace
98
+ return File.basename(options[:workspace], ".xcworkspace")
99
+ else
100
+ return File.basename(options[:project], ".xcodeproj")
101
+ end
102
+ end
103
+
104
+ # returns the Xcodeproj::Workspace or nil if it is a project
105
+ def workspace
106
+ return nil unless workspace?
107
+
108
+ @workspace ||= Xcodeproj::Workspace.new_from_xcworkspace(path)
109
+ @workspace
110
+ end
111
+
112
+ # returns the Xcodeproj::Project or nil if it is a workspace
113
+ def project
114
+ return nil if workspace?
115
+ @project ||= Xcodeproj::Project.open(path)
116
+ end
117
+
118
+ # Get all available schemes in an array
119
+ def schemes
120
+ @schemes ||= if workspace?
121
+ workspace.schemes.reject do |k, v|
122
+ v.include?("Pods/Pods.xcodeproj")
123
+ end.keys
124
+ else
125
+ Xcodeproj::Project.schemes(path)
126
+ end
127
+ end
128
+
129
+ # Let the user select a scheme
130
+ # Use a scheme containing the preferred_to_include string when multiple schemes were found
131
+ def select_scheme(preferred_to_include: nil)
132
+ if options[:scheme].to_s.length > 0
133
+ # Verify the scheme is available
134
+ unless schemes.include?(options[:scheme].to_s)
135
+ UI.error("Couldn't find specified scheme '#{options[:scheme]}'. Please make sure that the scheme is shared, see https://developer.apple.com/library/content/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/ConfigureBots.html#//apple_ref/doc/uid/TP40013292-CH9-SW3")
136
+ options[:scheme] = nil
137
+ end
138
+ end
139
+
140
+ return if options[:scheme].to_s.length > 0
141
+
142
+ if schemes.count == 1
143
+ options[:scheme] = schemes.last
144
+ elsif schemes.count > 1
145
+ preferred = nil
146
+ if preferred_to_include
147
+ preferred = schemes.find_all { |a| a.downcase.include?(preferred_to_include.downcase) }
148
+ end
149
+
150
+ if preferred_to_include && preferred.count == 1
151
+ options[:scheme] = preferred.last
152
+ elsif automated_scheme_selection? && schemes.include?(project_name)
153
+ UI.important("Using scheme matching project name (#{project_name}).")
154
+ options[:scheme] = project_name
155
+ elsif Helper.ci?
156
+ UI.error("Multiple schemes found but you haven't specified one.")
157
+ UI.error("Since this is a CI, please pass one using the `scheme` option")
158
+ show_scheme_shared_information
159
+ UI.user_error!("Multiple schemes found")
160
+ else
161
+ puts("Select Scheme: ")
162
+ options[:scheme] = choose(*schemes)
163
+ end
164
+ else
165
+ show_scheme_shared_information
166
+
167
+ UI.user_error!("No Schemes found")
168
+ end
169
+ end
170
+
171
+ def show_scheme_shared_information
172
+ UI.error("Couldn't find any schemes in this project, make sure that the scheme is shared if you are using a workspace")
173
+ UI.error("Open Xcode, click on `Manage Schemes` and check the `Shared` box for the schemes you want to use")
174
+ UI.error("Afterwards make sure to commit the changes into version control")
175
+ end
176
+
177
+ # Get all available configurations in an array
178
+ def configurations
179
+ @configurations ||= if workspace?
180
+ workspace
181
+ .file_references
182
+ .map(&:path)
183
+ .reject { |p| p.include?("Pods/Pods.xcodeproj") }
184
+ .map do |p|
185
+ # To maintain backwards compatibility, we
186
+ # silently ignore non-existent projects from
187
+ # workspaces.
188
+ begin
189
+ Xcodeproj::Project.open(p).build_configurations
190
+ rescue
191
+ []
192
+ end
193
+ end
194
+ .flatten
195
+ .compact
196
+ .map(&:name)
197
+ else
198
+ project.build_configurations.map(&:name)
199
+ end
200
+ end
201
+
202
+ # Returns bundle_id and sets the scheme for xcrun
203
+ def default_app_identifier
204
+ default_build_settings(key: "PRODUCT_BUNDLE_IDENTIFIER")
205
+ end
206
+
207
+ # Returns app name and sets the scheme for xcrun
208
+ def default_app_name
209
+ if is_workspace
210
+ return default_build_settings(key: "PRODUCT_NAME")
211
+ else
212
+ return app_name
213
+ end
214
+ end
215
+
216
+ def app_name
217
+ # WRAPPER_NAME: Example.app
218
+ # WRAPPER_SUFFIX: .app
219
+ name = build_settings(key: "WRAPPER_NAME")
220
+
221
+ return name.gsub(build_settings(key: "WRAPPER_SUFFIX"), "") if name
222
+ return "App" # default value
223
+ end
224
+
225
+ def dynamic_library?
226
+ (build_settings(key: "PRODUCT_TYPE") == "com.apple.product-type.library.dynamic")
227
+ end
228
+
229
+ def static_library?
230
+ (build_settings(key: "PRODUCT_TYPE") == "com.apple.product-type.library.static")
231
+ end
232
+
233
+ def library?
234
+ (static_library? || dynamic_library?)
235
+ end
236
+
237
+ def framework?
238
+ (build_settings(key: "PRODUCT_TYPE") == "com.apple.product-type.framework")
239
+ end
240
+
241
+ def application?
242
+ (build_settings(key: "PRODUCT_TYPE") == "com.apple.product-type.application")
243
+ end
244
+
245
+ def ios_library?
246
+ ((static_library? or dynamic_library?) && build_settings(key: "PLATFORM_NAME") == "iphoneos")
247
+ end
248
+
249
+ def ios_tvos_app?
250
+ (ios? || tvos?)
251
+ end
252
+
253
+ def ios_framework?
254
+ (framework? && build_settings(key: "PLATFORM_NAME") == "iphoneos")
255
+ end
256
+
257
+ def ios_app?
258
+ (application? && build_settings(key: "PLATFORM_NAME") == "iphoneos")
259
+ end
260
+
261
+ def produces_archive?
262
+ !(framework? || static_library? || dynamic_library?)
263
+ end
264
+
265
+ def mac_app?
266
+ (application? && build_settings(key: "PLATFORM_NAME") == "macosx")
267
+ end
268
+
269
+ def mac_library?
270
+ ((dynamic_library? or static_library?) && build_settings(key: "PLATFORM_NAME") == "macosx")
271
+ end
272
+
273
+ def mac_framework?
274
+ (framework? && build_settings(key: "PLATFORM_NAME") == "macosx")
275
+ end
276
+
277
+ def supports_mac_catalyst?
278
+ build_settings(key: "SUPPORTS_MACCATALYST") == "YES"
279
+ end
280
+
281
+ def command_line_tool?
282
+ (build_settings(key: "PRODUCT_TYPE") == "com.apple.product-type.tool")
283
+ end
284
+
285
+ def mac?
286
+ supported_platforms.include?(:macOS)
287
+ end
288
+
289
+ def tvos?
290
+ supported_platforms.include?(:tvOS)
291
+ end
292
+
293
+ def ios?
294
+ supported_platforms.include?(:iOS)
295
+ end
296
+
297
+ def watchos?
298
+ supported_platforms.include?(:watchOS)
299
+ end
300
+
301
+ def supported_platforms
302
+ supported_platforms = build_settings(key: "SUPPORTED_PLATFORMS")
303
+ if supported_platforms.nil?
304
+ UI.important("Could not read the \"SUPPORTED_PLATFORMS\" build setting, assuming that the project supports iOS only.")
305
+ return [:iOS]
306
+ end
307
+ supported_platforms.split.map do |platform|
308
+ case platform
309
+ when "macosx" then :macOS
310
+ when "iphonesimulator", "iphoneos" then :iOS
311
+ when "watchsimulator", "watchos" then :watchOS
312
+ when "appletvsimulator", "appletvos" then :tvOS
313
+ end
314
+ end.uniq.compact
315
+ end
316
+
317
+ def xcodebuild_parameters
318
+ proj = []
319
+ proj << "-workspace #{options[:workspace].shellescape}" if options[:workspace]
320
+ proj << "-scheme #{options[:scheme].shellescape}" if options[:scheme]
321
+ proj << "-project #{options[:project].shellescape}" if options[:project]
322
+ proj << "-configuration #{options[:configuration].shellescape}" if options[:configuration]
323
+ proj << "-derivedDataPath #{options[:derived_data_path].shellescape}" if options[:derived_data_path]
324
+ proj << "-xcconfig #{options[:xcconfig].shellescape}" if options[:xcconfig]
325
+
326
+ if FastlaneCore::Helper.xcode_at_least?('11.0') && options[:cloned_source_packages_path]
327
+ proj << "-clonedSourcePackagesDirPath #{options[:cloned_source_packages_path].shellescape}"
328
+ end
329
+
330
+ return proj
331
+ end
332
+
333
+ #####################################################
334
+ # @!group Raw Access
335
+ #####################################################
336
+
337
+ def build_xcodebuild_showbuildsettings_command
338
+ # We also need to pass the workspace and scheme to this command.
339
+ #
340
+ # The 'clean' portion of this command was a workaround for an xcodebuild bug with Core Data projects.
341
+ # This xcodebuild bug is fixed in Xcode 8.3 so 'clean' it's not necessary anymore
342
+ # See: https://github.com/fastlane/fastlane/pull/5626
343
+ if FastlaneCore::Helper.xcode_at_least?('8.3')
344
+ command = "xcodebuild -showBuildSettings #{xcodebuild_parameters.join(' ')}"
345
+ else
346
+ command = "xcodebuild clean -showBuildSettings #{xcodebuild_parameters.join(' ')}"
347
+ end
348
+ command += " 2> /dev/null" if xcodebuild_suppress_stderr
349
+ command
350
+ end
351
+
352
+ def build_xcodebuild_resolvepackagedependencies_command
353
+ command = "xcodebuild -resolvePackageDependencies #{xcodebuild_parameters.join(' ')}"
354
+ command += " 2> /dev/null" if xcodebuild_suppress_stderr
355
+ command
356
+ end
357
+
358
+ # Get the build settings for our project
359
+ # e.g. to properly get the DerivedData folder
360
+ # @param [String] The key of which we want the value for (e.g. "PRODUCT_NAME")
361
+ def build_settings(key: nil, optional: true)
362
+ unless @build_settings
363
+ if is_workspace
364
+ if schemes.count == 0
365
+ UI.user_error!("Could not find any schemes for Xcode workspace at path '#{self.path}'. Please make sure that the schemes you want to use are marked as `Shared` from Xcode.")
366
+ end
367
+ options[:scheme] ||= schemes.first
368
+ end
369
+
370
+ # SwiftPM support
371
+ if FastlaneCore::Helper.xcode_at_least?('11.0')
372
+ UI.important("Resolving Swift Package Manager dependencies...")
373
+ FastlaneCore::CommandExecutor.execute(command: build_xcodebuild_resolvepackagedependencies_command,
374
+ print_all: true,
375
+ print_command: !self.xcodebuild_list_silent)
376
+ end
377
+
378
+ command = build_xcodebuild_showbuildsettings_command
379
+
380
+ # Xcode might hang here and retrying fixes the problem, see fastlane#4059
381
+ begin
382
+ timeout = FastlaneCore::Project.xcode_build_settings_timeout
383
+ retries = FastlaneCore::Project.xcode_build_settings_retries
384
+ @build_settings = FastlaneCore::Project.run_command(command, timeout: timeout, retries: retries, print: !self.xcodebuild_list_silent)
385
+ if @build_settings.empty?
386
+ UI.error("Could not read build settings. Make sure that the scheme \"#{options[:scheme]}\" is configured for running by going to Product → Scheme → Edit Scheme…, selecting the \"Build\" section, checking the \"Run\" checkbox and closing the scheme window.")
387
+ end
388
+ rescue Timeout::Error
389
+ raise FastlaneCore::Interface::FastlaneDependencyCausedException.new, "xcodebuild -showBuildSettings timed out after #{retries + 1} retries with a base timeout of #{timeout}." \
390
+ " You can override the base timeout value with the environment variable FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT," \
391
+ " and the number of retries with the environment variable FASTLANE_XCODEBUILD_SETTINGS_RETRIES ".red
392
+ end
393
+ end
394
+
395
+ begin
396
+ result = @build_settings.split("\n").find do |c|
397
+ sp = c.split(" = ")
398
+ next if sp.length == 0
399
+ sp.first.strip == key
400
+ end
401
+ return result.split(" = ").last
402
+ rescue => ex
403
+ return nil if optional # an optional value, we really don't care if something goes wrong
404
+
405
+ UI.error(caller.join("\n\t"))
406
+ UI.error("Could not fetch #{key} from project file: #{ex}")
407
+ end
408
+
409
+ nil
410
+ end
411
+
412
+ # Returns the build settings and sets the default scheme to the options hash
413
+ def default_build_settings(key: nil, optional: true)
414
+ options[:scheme] ||= schemes.first if is_workspace
415
+ build_settings(key: key, optional: optional)
416
+ end
417
+
418
+ # @internal to module
419
+ def self.xcode_build_settings_timeout
420
+ (ENV['FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT'] || 3).to_i
421
+ end
422
+
423
+ # @internal to module
424
+ def self.xcode_build_settings_retries
425
+ (ENV['FASTLANE_XCODEBUILD_SETTINGS_RETRIES'] || 3).to_i
426
+ end
427
+
428
+ # @internal to module
429
+ # runs the specified command with the specified number of retries, killing each run if it times out.
430
+ # the first run times out after specified timeout elapses, and each successive run times out after
431
+ # a doubling of the previous timeout has elapsed.
432
+ # @raises Timeout::Error if all tries result in a timeout
433
+ # @returns the output of the command
434
+ # Note: - currently affected by https://github.com/fastlane/fastlane/issues/1504
435
+ # - retry feature added to solve https://github.com/fastlane/fastlane/issues/4059
436
+ def self.run_command(command, timeout: 0, retries: 0, print: true)
437
+ require 'timeout'
438
+
439
+ UI.command(command) if print
440
+
441
+ result = ''
442
+
443
+ total_tries = retries + 1
444
+ try = 1
445
+ try_timeout = timeout
446
+ begin
447
+ Timeout.timeout(try_timeout) do
448
+ # Using Helper.backticks didn't work here. `Timeout` doesn't time out, and the command hangs forever
449
+ result = `#{command}`.to_s
450
+ end
451
+ rescue Timeout::Error
452
+ try_limit_reached = try >= total_tries
453
+
454
+ # Try harder on each iteration
455
+ next_timeout = try_timeout * 2
456
+
457
+ message = "Command timed out after #{try_timeout} seconds on try #{try} of #{total_tries}"
458
+ message += ", trying again with a #{next_timeout} second timeout..." unless try_limit_reached
459
+
460
+ UI.important(message)
461
+
462
+ raise if try_limit_reached
463
+
464
+ try += 1
465
+ try_timeout = next_timeout
466
+ retry
467
+ end
468
+
469
+ return result
470
+ end
471
+
472
+ # Array of paths to all project files
473
+ # (might be multiple, because of workspaces)
474
+ def project_paths
475
+ return @_project_paths if @_project_paths
476
+ if self.workspace?
477
+ # Find the xcodeproj file, as the information isn't included in the workspace file
478
+ # We have a reference to the workspace, let's find the xcodeproj file
479
+ # Use Xcodeproj gem here to
480
+ # * parse the contents.xcworkspacedata XML file
481
+ # * handle different types (group:, container: etc.) of file references and their paths
482
+ # for details see https://github.com/CocoaPods/Xcodeproj/blob/e0287156d426ba588c9234bb2a4c824149889860/lib/xcodeproj/workspace/file_reference.rb```
483
+
484
+ workspace_dir_path = File.expand_path("..", self.path)
485
+ file_references_paths = workspace.file_references.map { |fr| fr.absolute_path(workspace_dir_path) }
486
+ @_project_paths = file_references_paths.select do |current_match|
487
+ # Xcode workspaces can contain loose files now, so let's filter non-xcodeproj files.
488
+ current_match.end_with?(".xcodeproj")
489
+ end.reject do |current_match|
490
+ # We're not interested in a `Pods` project, as it doesn't contain any relevant information about code signing
491
+ current_match.end_with?("Pods/Pods.xcodeproj")
492
+ end
493
+
494
+ return @_project_paths
495
+ else
496
+ # Return the path as an array
497
+ return @_project_paths = [path]
498
+ end
499
+ end
500
+
501
+ private
502
+
503
+ # If scheme not specified, do we want the scheme
504
+ # matching project name?
505
+ def automated_scheme_selection?
506
+ FastlaneCore::Env.truthy?("AUTOMATED_SCHEME_SELECTION")
507
+ end
508
+ end
509
+ end