fastlane 2.195.0 → 2.213.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (214) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +96 -89
  4. data/cert/lib/cert/runner.rb +19 -8
  5. data/deliver/lib/assets/ScreenshotsHelp +29 -6
  6. data/deliver/lib/deliver/app_screenshot.rb +30 -4
  7. data/deliver/lib/deliver/app_screenshot_iterator.rb +1 -1
  8. data/deliver/lib/deliver/options.rb +6 -2
  9. data/deliver/lib/deliver/runner.rb +88 -24
  10. data/deliver/lib/deliver/submit_for_review.rb +25 -3
  11. data/deliver/lib/deliver/upload_price_tier.rb +3 -1
  12. data/deliver/lib/deliver/upload_screenshots.rb +2 -2
  13. data/fastlane/lib/assets/AppfileTemplate +1 -1
  14. data/fastlane/lib/assets/AppfileTemplate.swift +1 -1
  15. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +12 -6
  16. data/fastlane/lib/fastlane/actions/badge.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +1 -1
  18. data/fastlane/lib/fastlane/actions/danger.rb +14 -0
  19. data/fastlane/lib/fastlane/actions/docs/build_app.md +5 -5
  20. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +19 -2
  21. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
  22. data/fastlane/lib/fastlane/actions/docs/run_tests.md +1 -1
  23. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -1
  24. data/fastlane/lib/fastlane/actions/download_dsyms.rb +62 -46
  25. data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +44 -5
  26. data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +1 -1
  27. data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/get_version_number.rb +8 -3
  29. data/fastlane/lib/fastlane/actions/git_commit.rb +4 -6
  30. data/fastlane/lib/fastlane/actions/import_certificate.rb +1 -1
  31. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -3
  32. data/fastlane/lib/fastlane/actions/notarize.rb +29 -11
  33. data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +1 -1
  34. data/fastlane/lib/fastlane/actions/pod_push.rb +19 -1
  35. data/fastlane/lib/fastlane/actions/read_podspec.rb +1 -1
  36. data/fastlane/lib/fastlane/actions/run_tests.rb +19 -9
  37. data/fastlane/lib/fastlane/actions/set_github_release.rb +11 -5
  38. data/fastlane/lib/fastlane/actions/setup_ci.rb +13 -4
  39. data/fastlane/lib/fastlane/actions/trainer.rb +49 -0
  40. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +31 -4
  41. data/fastlane/lib/fastlane/actions/update_info_plist.rb +1 -1
  42. data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +10 -1
  43. data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +1 -1
  44. data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
  45. data/fastlane/lib/fastlane/actions/xcode_install.rb +5 -1
  46. data/fastlane/lib/fastlane/actions/xcode_select.rb +1 -1
  47. data/fastlane/lib/fastlane/actions/xcodebuild.rb +8 -2
  48. data/fastlane/lib/fastlane/actions/xcodes.rb +152 -0
  49. data/fastlane/lib/fastlane/actions/xcov.rb +5 -0
  50. data/fastlane/lib/fastlane/actions/xcversion.rb +17 -7
  51. data/fastlane/lib/fastlane/cli_tools_distributor.rb +5 -0
  52. data/fastlane/lib/fastlane/commands_generator.rb +2 -1
  53. data/fastlane/lib/fastlane/documentation/docs_generator.rb +17 -12
  54. data/fastlane/lib/fastlane/fast_file.rb +18 -5
  55. data/fastlane/lib/fastlane/features.rb +3 -0
  56. data/fastlane/lib/fastlane/helper/xcodebuild_formatter_helper.rb +9 -0
  57. data/fastlane/lib/fastlane/helper/xcodes_helper.rb +28 -0
  58. data/fastlane/lib/fastlane/helper/xcversion_helper.rb +0 -9
  59. data/fastlane/lib/fastlane/lane_manager.rb +1 -1
  60. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
  61. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
  62. data/fastlane/lib/fastlane/setup/setup_ios.rb +1 -1
  63. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -1
  64. data/fastlane/lib/fastlane/swift_lane_manager.rb +11 -3
  65. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +54 -1
  66. data/fastlane/lib/fastlane/tools.rb +18 -1
  67. data/fastlane/lib/fastlane/version.rb +1 -1
  68. data/fastlane/swift/Actions.swift +1 -1
  69. data/fastlane/swift/Appfile.swift +2 -2
  70. data/fastlane/swift/ArgumentProcessor.swift +1 -1
  71. data/fastlane/swift/Atomic.swift +150 -0
  72. data/fastlane/swift/ControlCommand.swift +1 -1
  73. data/fastlane/swift/Deliverfile.swift +2 -2
  74. data/fastlane/swift/DeliverfileProtocol.swift +8 -4
  75. data/fastlane/swift/Fastlane.swift +604 -249
  76. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +30 -20
  77. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +1 -1
  78. data/fastlane/swift/Gymfile.swift +2 -2
  79. data/fastlane/swift/GymfileProtocol.swift +20 -8
  80. data/fastlane/swift/LaneFileProtocol.swift +3 -3
  81. data/fastlane/swift/MainProcess.swift +3 -3
  82. data/fastlane/swift/Matchfile.swift +2 -2
  83. data/fastlane/swift/MatchfileProtocol.swift +25 -5
  84. data/fastlane/swift/OptionalConfigValue.swift +1 -1
  85. data/fastlane/swift/Plugins.swift +1 -1
  86. data/fastlane/swift/Precheckfile.swift +2 -2
  87. data/fastlane/swift/PrecheckfileProtocol.swift +3 -3
  88. data/fastlane/swift/RubyCommand.swift +1 -1
  89. data/fastlane/swift/RubyCommandable.swift +1 -1
  90. data/fastlane/swift/Runner.swift +14 -10
  91. data/fastlane/swift/RunnerArgument.swift +1 -1
  92. data/fastlane/swift/Scanfile.swift +2 -2
  93. data/fastlane/swift/ScanfileProtocol.swift +35 -11
  94. data/fastlane/swift/Screengrabfile.swift +2 -2
  95. data/fastlane/swift/ScreengrabfileProtocol.swift +5 -5
  96. data/fastlane/swift/Snapshotfile.swift +2 -2
  97. data/fastlane/swift/SnapshotfileProtocol.swift +12 -8
  98. data/fastlane/swift/SocketClient.swift +9 -5
  99. data/fastlane/swift/SocketClientDelegateProtocol.swift +2 -2
  100. data/fastlane/swift/SocketResponse.swift +1 -1
  101. data/fastlane/swift/formatting/Brewfile.lock.json +47 -24
  102. data/fastlane/swift/main.swift +1 -1
  103. data/fastlane/swift/upgrade_manifest.json +1 -1
  104. data/fastlane_core/README.md +1 -0
  105. data/fastlane_core/lib/fastlane_core/cert_checker.rb +74 -17
  106. data/fastlane_core/lib/fastlane_core/device_manager.rb +5 -1
  107. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +10 -5
  108. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +409 -26
  109. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -0
  110. data/fastlane_core/lib/fastlane_core/project.rb +19 -2
  111. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +7 -0
  112. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +4 -2
  113. data/frameit/lib/frameit/device.rb +1 -1
  114. data/frameit/lib/frameit/device_types.rb +9 -0
  115. data/frameit/lib/frameit/editor.rb +16 -18
  116. data/frameit/lib/frameit/frame_downloader.rb +1 -1
  117. data/frameit/lib/frameit/trim_box.rb +6 -0
  118. data/gym/lib/gym/generators/build_command_generator.rb +70 -23
  119. data/gym/lib/gym/options.rb +30 -5
  120. data/match/lib/match/change_password.rb +2 -0
  121. data/match/lib/match/commands_generator.rb +2 -1
  122. data/match/lib/match/encryption/openssl.rb +1 -1
  123. data/match/lib/match/encryption.rb +3 -0
  124. data/match/lib/match/generator.rb +1 -0
  125. data/match/lib/match/importer.rb +11 -1
  126. data/match/lib/match/migrate.rb +4 -3
  127. data/match/lib/match/module.rb +54 -2
  128. data/match/lib/match/nuke.rb +115 -47
  129. data/match/lib/match/options.rb +27 -1
  130. data/match/lib/match/runner.rb +26 -6
  131. data/match/lib/match/setup.rb +1 -1
  132. data/match/lib/match/spaceship_ensure.rb +5 -2
  133. data/match/lib/match/storage/gitlab/client.rb +102 -0
  134. data/match/lib/match/storage/gitlab/secure_file.rb +65 -0
  135. data/match/lib/match/storage/gitlab_secure_files.rb +188 -0
  136. data/match/lib/match/storage/google_cloud_storage.rb +7 -6
  137. data/match/lib/match/storage/s3_storage.rb +3 -3
  138. data/match/lib/match/storage.rb +4 -0
  139. data/match/lib/match/table_printer.rb +2 -1
  140. data/match/lib/match/utils.rb +15 -2
  141. data/pem/lib/pem/manager.rb +32 -8
  142. data/pem/lib/pem/options.rb +10 -1
  143. data/pilot/lib/pilot/build_manager.rb +34 -14
  144. data/pilot/lib/pilot/options.rb +6 -1
  145. data/scan/lib/scan/detect_values.rb +14 -1
  146. data/scan/lib/scan/error_handler.rb +9 -0
  147. data/scan/lib/scan/options.rb +54 -9
  148. data/scan/lib/scan/runner.rb +171 -25
  149. data/scan/lib/scan/test_command_generator.rb +65 -5
  150. data/screengrab/lib/screengrab/options.rb +2 -2
  151. data/sigh/lib/assets/resign.sh +8 -5
  152. data/sigh/lib/sigh/download_all.rb +14 -2
  153. data/sigh/lib/sigh/module.rb +3 -1
  154. data/sigh/lib/sigh/options.rb +5 -0
  155. data/sigh/lib/sigh/runner.rb +12 -2
  156. data/snapshot/lib/assets/SnapshotHelper.swift +3 -3
  157. data/snapshot/lib/snapshot/latest_os_version.rb +2 -5
  158. data/snapshot/lib/snapshot/options.rb +24 -8
  159. data/snapshot/lib/snapshot/reports_generator.rb +9 -0
  160. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +10 -3
  161. data/snapshot/lib/snapshot/test_command_generator.rb +37 -2
  162. data/spaceship/lib/spaceship/client.rb +71 -40
  163. data/spaceship/lib/spaceship/commands_generator.rb +1 -1
  164. data/spaceship/lib/spaceship/connect_api/api_client.rb +10 -5
  165. data/spaceship/lib/spaceship/connect_api/models/actor.rb +26 -0
  166. data/spaceship/lib/spaceship/connect_api/models/app.rb +52 -6
  167. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +1 -0
  168. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +5 -0
  169. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +7 -0
  170. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -1
  171. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +27 -10
  172. data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -2
  173. data/spaceship/lib/spaceship/connect_api/models/build_bundle.rb +68 -0
  174. data/spaceship/lib/spaceship/connect_api/models/build_bundle_file_sizes.rb +34 -0
  175. data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +2 -1
  176. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +4 -0
  177. data/spaceship/lib/spaceship/connect_api/models/device.rb +47 -4
  178. data/spaceship/lib/spaceship/connect_api/models/profile.rb +4 -0
  179. data/spaceship/lib/spaceship/connect_api/models/resolution_center_message.rb +29 -0
  180. data/spaceship/lib/spaceship/connect_api/models/resolution_center_thread.rb +67 -0
  181. data/spaceship/lib/spaceship/connect_api/models/review_rejection.rb +19 -0
  182. data/spaceship/lib/spaceship/connect_api/models/review_submission.rb +86 -0
  183. data/spaceship/lib/spaceship/connect_api/models/review_submission_item.rb +40 -0
  184. data/spaceship/lib/spaceship/connect_api/models/user.rb +5 -0
  185. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +19 -0
  186. data/spaceship/lib/spaceship/connect_api/response.rb +23 -6
  187. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +33 -2
  188. data/spaceship/lib/spaceship/connect_api/token.rb +6 -3
  189. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +124 -8
  190. data/spaceship/lib/spaceship/connect_api.rb +9 -0
  191. data/spaceship/lib/spaceship/errors.rb +34 -0
  192. data/spaceship/lib/spaceship/globals.rb +9 -0
  193. data/spaceship/lib/spaceship/hashcash.rb +52 -0
  194. data/spaceship/lib/spaceship/portal/certificate.rb +4 -3
  195. data/spaceship/lib/spaceship/spaceauth_runner.rb +1 -1
  196. data/spaceship/lib/spaceship/tunes/app_ratings.rb +6 -6
  197. data/spaceship/lib/spaceship/tunes/iap_families.rb +1 -1
  198. data/spaceship/lib/spaceship/tunes/tunes.rb +0 -1
  199. data/spaceship/lib/spaceship/tunes/tunes_client.rb +79 -21
  200. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +11 -3
  201. data/spaceship/lib/spaceship.rb +1 -0
  202. data/supply/lib/supply/client.rb +5 -10
  203. data/supply/lib/supply/options.rb +8 -0
  204. data/supply/lib/supply/uploader.rb +7 -3
  205. data/trainer/lib/assets/junit.xml.erb +28 -0
  206. data/trainer/lib/trainer/commands_generator.rb +51 -0
  207. data/trainer/lib/trainer/junit_generator.rb +31 -0
  208. data/trainer/lib/trainer/module.rb +10 -0
  209. data/trainer/lib/trainer/options.rb +66 -0
  210. data/trainer/lib/trainer/test_parser.rb +398 -0
  211. data/trainer/lib/trainer/xcresult.rb +403 -0
  212. data/trainer/lib/trainer.rb +7 -0
  213. metadata +73 -37
  214. data/spaceship/lib/spaceship/tunes/user_detail.rb +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4cd7eb437e3a1f8298553886732f358e31eef1c3cc91f43d39c8cfa47630962e
4
- data.tar.gz: 10e833b578831c678fa5515c12cc9fb18c9668d9296871e487571d92ceedeb53
3
+ metadata.gz: 4ac7eee0c8810536692c5ffca62c0f0924595f223d889affb732cb72f98e64be
4
+ data.tar.gz: 6d91512766cfd352f98cfa4fc905f366bd4c6eefe8ddf680ddddb1e222827120
5
5
  SHA512:
6
- metadata.gz: 7bda6c9251396e39f8d88efe075f5684cdd22b6a144732cc472ee711e4b6b192f31a9fb7ec6a387a224d8904e0097596cc13f9cb1006d96d30048f3cba6cd56f
7
- data.tar.gz: 7a64bc28296e873afa02ac9af4f6c7d48d1d46c328a84218185b840e761f40cf5154385d390b10e024b8bd66a335a811fe9db0d09be2d1a7516f7c3d23c7d870
6
+ metadata.gz: e7ebfc7fcd8d9883e053fe32e277a31aa70b98082532efdd310d7bd4b6e44976e4445e345c980f41b19baaa31ba6dcff626af80299393d97f83e45ff8f2c4558
7
+ data.tar.gz: eec9c6e744bced6eacc16bd85c2cf86cc2e5cb920e2c031add3a0d5690b9e6b675b68d5bcb89db5cef48ec1367b2d6e610ac83eb9271c98e08f6ad0ba80225d8
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015-2021 The Fastlane Authors
3
+ Copyright (c) 2015-2022 The Fastlane Authors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -41,49 +41,37 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
41
41
  </a>
42
42
  <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
43
43
  </td>
44
- <td id='aaron-brager'>
45
- <a href='https://github.com/getaaron'>
46
- <img src='https://github.com/getaaron.png' width='140px;'>
44
+ <td id='jan-piotrowski'>
45
+ <a href='https://github.com/janpio'>
46
+ <img src='https://github.com/janpio.png' width='140px;'>
47
47
  </a>
48
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
48
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
49
49
  </td>
50
- <td id='jorge-revuelta-h'>
51
- <a href='https://github.com/minuscorp'>
52
- <img src='https://github.com/minuscorp.png' width='140px;'>
50
+ <td id='josh-holtz'>
51
+ <a href='https://github.com/joshdholtz'>
52
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
53
53
  </a>
54
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
54
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
55
55
  </td>
56
- <td id='danielle-tomlinson'>
57
- <a href='https://github.com/endocrimes'>
58
- <img src='https://github.com/endocrimes.png' width='140px;'>
56
+ <td id='manu-wallner'>
57
+ <a href='https://github.com/milch'>
58
+ <img src='https://github.com/milch.png' width='140px;'>
59
59
  </a>
60
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
60
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
61
61
  </td>
62
- <td id='jimmy-dee'>
63
- <a href='https://github.com/jdee'>
64
- <img src='https://github.com/jdee.png' width='140px;'>
62
+ <td id='kohki-miki'>
63
+ <a href='https://github.com/giginet'>
64
+ <img src='https://github.com/giginet.png' width='140px;'>
65
65
  </a>
66
- <h4 align='center'>Jimmy Dee</h4>
66
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
67
67
  </td>
68
68
  </tr>
69
69
  <tr>
70
- <td id='max-ott'>
71
- <a href='https://github.com/max-ott'>
72
- <img src='https://github.com/max-ott.png' width='140px;'>
73
- </a>
74
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
75
- </td>
76
- <td id='josh-holtz'>
77
- <a href='https://github.com/joshdholtz'>
78
- <img src='https://github.com/joshdholtz.png' width='140px;'>
79
- </a>
80
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
81
- </td>
82
- <td id='felix-krause'>
83
- <a href='https://github.com/KrauseFx'>
84
- <img src='https://github.com/KrauseFx.png' width='140px;'>
70
+ <td id='jérôme-lacoste'>
71
+ <a href='https://github.com/lacostej'>
72
+ <img src='https://github.com/lacostej.png' width='140px;'>
85
73
  </a>
86
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
87
75
  </td>
88
76
  <td id='olivier-halligon'>
89
77
  <a href='https://github.com/AliSoftware'>
@@ -91,43 +79,87 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
91
79
  </a>
92
80
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
93
81
  </td>
94
- <td id='stefan-natchev'>
95
- <a href='https://github.com/snatchev'>
96
- <img src='https://github.com/snatchev.png' width='140px;'>
82
+ <td id='danielle-tomlinson'>
83
+ <a href='https://github.com/endocrimes'>
84
+ <img src='https://github.com/endocrimes.png' width='140px;'>
97
85
  </a>
98
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
86
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
87
+ </td>
88
+ <td id='roger-oba'>
89
+ <a href='https://github.com/rogerluan'>
90
+ <img src='https://github.com/rogerluan.png' width='140px;'>
91
+ </a>
92
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
93
+ </td>
94
+ <td id='luka-mirosevic'>
95
+ <a href='https://github.com/lmirosevic'>
96
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
97
+ </a>
98
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
99
99
  </td>
100
100
  </tr>
101
101
  <tr>
102
+ <td id='łukasz-grabowski'>
103
+ <a href='https://github.com/lucgrabowski'>
104
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
105
+ </a>
106
+ <h4 align='center'>Łukasz Grabowski</h4>
107
+ </td>
102
108
  <td id='matthew-ellis'>
103
109
  <a href='https://github.com/matthewellis'>
104
110
  <img src='https://github.com/matthewellis.png' width='140px;'>
105
111
  </a>
106
112
  <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
107
113
  </td>
108
- <td id='manu-wallner'>
109
- <a href='https://github.com/milch'>
110
- <img src='https://github.com/milch.png' width='140px;'>
114
+ <td id='jimmy-dee'>
115
+ <a href='https://github.com/jdee'>
116
+ <img src='https://github.com/jdee.png' width='140px;'>
111
117
  </a>
112
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
118
+ <h4 align='center'>Jimmy Dee</h4>
113
119
  </td>
114
- <td id='roger-oba'>
115
- <a href='https://github.com/rogerluan'>
116
- <img src='https://github.com/rogerluan.png' width='140px;'>
120
+ <td id='max-ott'>
121
+ <a href='https://github.com/max-ott'>
122
+ <img src='https://github.com/max-ott.png' width='140px;'>
117
123
  </a>
118
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
119
125
  </td>
126
+ <td id='iulian-onofrei'>
127
+ <a href='https://github.com/revolter'>
128
+ <img src='https://github.com/revolter.png' width='140px;'>
129
+ </a>
130
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
131
+ </td>
132
+ </tr>
133
+ <tr>
120
134
  <td id='joshua-liebowitz'>
121
135
  <a href='https://github.com/taquitos'>
122
136
  <img src='https://github.com/taquitos.png' width='140px;'>
123
137
  </a>
124
138
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
125
139
  </td>
126
- <td id='helmut-januschka'>
127
- <a href='https://github.com/hjanuschka'>
128
- <img src='https://github.com/hjanuschka.png' width='140px;'>
140
+ <td id='andrew-mcburney'>
141
+ <a href='https://github.com/armcburney'>
142
+ <img src='https://github.com/armcburney.png' width='140px;'>
129
143
  </a>
130
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
145
+ </td>
146
+ <td id='manish-rathi'>
147
+ <a href='https://github.com/crazymanish'>
148
+ <img src='https://github.com/crazymanish.png' width='140px;'>
149
+ </a>
150
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
151
+ </td>
152
+ <td id='aaron-brager'>
153
+ <a href='https://github.com/getaaron'>
154
+ <img src='https://github.com/getaaron.png' width='140px;'>
155
+ </a>
156
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
157
+ </td>
158
+ <td id='satoshi-namai'>
159
+ <a href='https://github.com/ainame'>
160
+ <img src='https://github.com/ainame.png' width='140px;'>
161
+ </a>
162
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
131
163
  </td>
132
164
  </tr>
133
165
  <tr>
@@ -137,63 +169,38 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
137
169
  </a>
138
170
  <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
139
171
  </td>
140
- <td id='kohki-miki'>
141
- <a href='https://github.com/giginet'>
142
- <img src='https://github.com/giginet.png' width='140px;'>
172
+ <td id='helmut-januschka'>
173
+ <a href='https://github.com/hjanuschka'>
174
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
143
175
  </a>
144
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
176
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
145
177
  </td>
146
- <td id='jérôme-lacoste'>
147
- <a href='https://github.com/lacostej'>
148
- <img src='https://github.com/lacostej.png' width='140px;'>
178
+ <td id='jorge-revuelta-h'>
179
+ <a href='https://github.com/minuscorp'>
180
+ <img src='https://github.com/minuscorp.png' width='140px;'>
149
181
  </a>
150
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
182
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
151
183
  </td>
152
- <td id='andrew-mcburney'>
153
- <a href='https://github.com/armcburney'>
154
- <img src='https://github.com/armcburney.png' width='140px;'>
184
+ <td id='stefan-natchev'>
185
+ <a href='https://github.com/snatchev'>
186
+ <img src='https://github.com/snatchev.png' width='140px;'>
155
187
  </a>
156
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
188
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
157
189
  </td>
158
- <td id='luka-mirosevic'>
159
- <a href='https://github.com/lmirosevic'>
160
- <img src='https://github.com/lmirosevic.png' width='140px;'>
190
+ <td id='felix-krause'>
191
+ <a href='https://github.com/KrauseFx'>
192
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
161
193
  </a>
162
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
194
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
163
195
  </td>
164
196
  </tr>
165
197
  <tr>
166
- <td id='iulian-onofrei'>
167
- <a href='https://github.com/revolter'>
168
- <img src='https://github.com/revolter.png' width='140px;'>
169
- </a>
170
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
171
- </td>
172
198
  <td id='maksym-grebenets'>
173
199
  <a href='https://github.com/mgrebenets'>
174
200
  <img src='https://github.com/mgrebenets.png' width='140px;'>
175
201
  </a>
176
202
  <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
177
203
  </td>
178
- <td id='manish-rathi'>
179
- <a href='https://github.com/crazymanish'>
180
- <img src='https://github.com/crazymanish.png' width='140px;'>
181
- </a>
182
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
183
- </td>
184
- <td id='jan-piotrowski'>
185
- <a href='https://github.com/janpio'>
186
- <img src='https://github.com/janpio.png' width='140px;'>
187
- </a>
188
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
189
- </td>
190
- <td id='satoshi-namai'>
191
- <a href='https://github.com/ainame'>
192
- <img src='https://github.com/ainame.png' width='140px;'>
193
- </a>
194
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
195
- </td>
196
- </tr>
197
204
  </table>
198
205
 
199
206
  Special thanks to all [contributors](https://github.com/fastlane/fastlane/graphs/contributors) for extending and improving _fastlane_.
@@ -138,24 +138,35 @@ module Cert
138
138
  # All certificates of this type
139
139
  def certificates
140
140
  filter = {
141
- certificateType: certificate_type
141
+ certificateType: certificate_types.join(",")
142
142
  }
143
143
  return Spaceship::ConnectAPI::Certificate.all(filter: filter)
144
144
  end
145
145
 
146
- # The kind of certificate we're interested in
146
+ # The kind of certificate we're interested in (for creating)
147
147
  def certificate_type
148
+ return certificate_types.first
149
+ end
150
+
151
+ # The kind of certificates we're interested in (for listing)
152
+ def certificate_types
148
153
  if Cert.config[:type]
149
154
  case Cert.config[:type].to_sym
150
155
  when :mac_installer_distribution
151
- return Spaceship::ConnectAPI::Certificate::CertificateType::MAC_INSTALLER_DISTRIBUTION
156
+ return [Spaceship::ConnectAPI::Certificate::CertificateType::MAC_INSTALLER_DISTRIBUTION]
152
157
  when :developer_id_application
153
- return Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_APPLICATION
158
+ return [
159
+ Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_APPLICATION_G2,
160
+ Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_APPLICATION
161
+ ]
154
162
  when :developer_id_kext
155
- return Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_KEXT
163
+ return [Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_KEXT]
156
164
  when :developer_id_installer
157
- raise "Cannot do with ASC API?"
158
- # return Spaceship.certificate.developer_id_installer
165
+ if !Spaceship::ConnectAPI.token.nil?
166
+ raise "As of 2021-11-09, the App Store Connect API does not allow accessing DEVELOPER_ID_INSTALLER with the API Key. Please file an issue on GitHub if this has changed and needs to be updated"
167
+ else
168
+ return [Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_INSTALLER]
169
+ end
159
170
  else
160
171
  UI.user_error("Unaccepted value for :type - #{Cert.config[:type]}")
161
172
  end
@@ -179,7 +190,7 @@ module Cert
179
190
  end
180
191
  end
181
192
 
182
- return cert_type
193
+ return [cert_type]
183
194
  end
184
195
 
185
196
  def create_certificate
@@ -1,7 +1,30 @@
1
- Put all screenshots you want to use inside the folder of its language (e.g. en-US).
2
- The device type will automatically be recognized using the image resolution. Apple TV screenshots
3
- should be stored in a subdirectory named appleTV with language folders inside of it. iMessage
4
- screenshots, like Apple TV screenshots, should also be stored in a subdirectory named iMessage
5
- with language folders inside of it.
1
+ ## Screenshots Naming Rules
6
2
 
7
- The screenshots can be named whatever you want, but keep in mind they are sorted alphabetically.
3
+ Put all screenshots you want to use inside the folder of its language (e.g. `en-US`).
4
+ The device type will automatically be recognized using the image resolution.
5
+
6
+ The screenshots can be named whatever you want, but keep in mind they are sorted
7
+ alphabetically, in a human-friendly way. See https://github.com/fastlane/fastlane/pull/18200 for more details.
8
+
9
+ ### Exceptions
10
+
11
+ #### iPad Pro (3rd Gen) 12.9"
12
+
13
+ Since iPad Pro (3rd Gen) 12.9" and iPad Pro (2nd Gen) 12.9" have the same image
14
+ resolution, screenshots of the iPad Pro (3rd gen) 12.9" must contain either the
15
+ string `iPad Pro (12.9-inch) (3rd generation)`, `IPAD_PRO_3GEN_129`, or `ipadPro129`
16
+ (App Store Connect's internal naming of the display family for the 3rd generation iPad Pro)
17
+ in its filename to be assigned the correct display family and to be uploaded to
18
+ the correct screenshot slot in your app's metadata.
19
+
20
+ ### Other Platforms
21
+
22
+ #### Apple TV
23
+
24
+ Apple TV screenshots should be stored in a subdirectory named `appleTV` with language
25
+ folders inside of it.
26
+
27
+ #### iMessage
28
+
29
+ iMessage screenshots, like the Apple TV ones, should also be stored in a subdirectory
30
+ named `iMessage`, with language folders inside of it.
@@ -23,6 +23,8 @@ module Deliver
23
23
  IOS_61 = "iOS-6.1-in"
24
24
  # iPhone XS Max
25
25
  IOS_65 = "iOS-6.5-in"
26
+ # iPhone 14 Pro Max
27
+ IOS_67 = "iOS-6.7-in"
26
28
 
27
29
  # iPad
28
30
  IOS_IPAD = "iOS-iPad"
@@ -47,6 +49,8 @@ module Deliver
47
49
  IOS_61_MESSAGES = "iOS-6.1-in-messages"
48
50
  # iPhone XS Max iMessage
49
51
  IOS_65_MESSAGES = "iOS-6.5-in-messages"
52
+ # iPhone 14 Pro Max iMessage
53
+ IOS_67_MESSAGES = "iOS-6.7-in-messages"
50
54
 
51
55
  # iPad iMessage
52
56
  IOS_IPAD_MESSAGES = "iOS-iPad-messages"
@@ -63,6 +67,8 @@ module Deliver
63
67
  IOS_APPLE_WATCH = "iOS-Apple-Watch"
64
68
  # Apple Watch Series 4
65
69
  IOS_APPLE_WATCH_SERIES4 = "iOS-Apple-Watch-Series4"
70
+ # Apple Watch Series 7
71
+ IOS_APPLE_WATCH_SERIES7 = "iOS-Apple-Watch-Series7"
66
72
 
67
73
  # Apple TV
68
74
  APPLE_TV = "Apple-TV"
@@ -99,6 +105,7 @@ module Deliver
99
105
  ScreenSize::IOS_55 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPHONE_55, # also 7 Plus & 8 Plus
100
106
  ScreenSize::IOS_58 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPHONE_58,
101
107
  ScreenSize::IOS_65 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPHONE_65,
108
+ ScreenSize::IOS_67 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPHONE_67,
102
109
  ScreenSize::IOS_IPAD => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPAD_97,
103
110
  ScreenSize::IOS_IPAD_10_5 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPAD_105,
104
111
  ScreenSize::IOS_IPAD_11 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPAD_PRO_3GEN_11,
@@ -109,6 +116,7 @@ module Deliver
109
116
  ScreenSize::IOS_55_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPHONE_55, # also 7 Plus & 8 Plus
110
117
  ScreenSize::IOS_58_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPHONE_58,
111
118
  ScreenSize::IOS_65_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPHONE_65,
119
+ ScreenSize::IOS_67_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPHONE_67,
112
120
  ScreenSize::IOS_IPAD_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_97,
113
121
  ScreenSize::IOS_IPAD_PRO_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_PRO_129,
114
122
  ScreenSize::IOS_IPAD_PRO_12_9_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_PRO_3GEN_129,
@@ -117,6 +125,7 @@ module Deliver
117
125
  ScreenSize::MAC => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_DESKTOP,
118
126
  ScreenSize::IOS_APPLE_WATCH => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_3,
119
127
  ScreenSize::IOS_APPLE_WATCH_SERIES4 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_4,
128
+ ScreenSize::IOS_APPLE_WATCH_SERIES7 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_7,
120
129
  ScreenSize::APPLE_TV => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_APPLE_TV
121
130
  }
122
131
  return matching[self.screen_size]
@@ -132,6 +141,7 @@ module Deliver
132
141
  ScreenSize::IOS_58 => "iPhone XS",
133
142
  ScreenSize::IOS_61 => "iPhone XR",
134
143
  ScreenSize::IOS_65 => "iPhone XS Max",
144
+ ScreenSize::IOS_67 => "iPhone 14 Pro Max",
135
145
  ScreenSize::IOS_IPAD => "iPad",
136
146
  ScreenSize::IOS_IPAD_10_5 => "iPad 10.5",
137
147
  ScreenSize::IOS_IPAD_11 => "iPad 11",
@@ -143,6 +153,7 @@ module Deliver
143
153
  ScreenSize::IOS_58_MESSAGES => "iPhone XS (iMessage)",
144
154
  ScreenSize::IOS_61_MESSAGES => "iPhone XR (iMessage)",
145
155
  ScreenSize::IOS_65_MESSAGES => "iPhone XS Max (iMessage)",
156
+ ScreenSize::IOS_67_MESSAGES => "iPhone 14 Pro Max (iMessage)",
146
157
  ScreenSize::IOS_IPAD_MESSAGES => "iPad (iMessage)",
147
158
  ScreenSize::IOS_IPAD_PRO_MESSAGES => "iPad Pro (iMessage)",
148
159
  ScreenSize::IOS_IPAD_PRO_12_9_MESSAGES => "iPad Pro (12.9-inch) (3rd generation) (iMessage)",
@@ -151,6 +162,7 @@ module Deliver
151
162
  ScreenSize::MAC => "Mac",
152
163
  ScreenSize::IOS_APPLE_WATCH => "Watch",
153
164
  ScreenSize::IOS_APPLE_WATCH_SERIES4 => "Watch Series4",
165
+ ScreenSize::IOS_APPLE_WATCH_SERIES7 => "Watch Series7",
154
166
  ScreenSize::APPLE_TV => "Apple TV"
155
167
  }
156
168
  return matching[self.screen_size]
@@ -171,6 +183,7 @@ module Deliver
171
183
  ScreenSize::IOS_55_MESSAGES,
172
184
  ScreenSize::IOS_58_MESSAGES,
173
185
  ScreenSize::IOS_65_MESSAGES,
186
+ ScreenSize::IOS_67_MESSAGES,
174
187
  ScreenSize::IOS_IPAD_MESSAGES,
175
188
  ScreenSize::IOS_IPAD_PRO_MESSAGES,
176
189
  ScreenSize::IOS_IPAD_PRO_12_9_MESSAGES,
@@ -183,6 +196,10 @@ module Deliver
183
196
  # This list does not include iPad Pro 12.9-inch (3rd generation)
184
197
  # because it has same resoluation as IOS_IPAD_PRO and will clobber
185
198
  return {
199
+ ScreenSize::IOS_67_MESSAGES => [
200
+ [1290, 2796],
201
+ [2796, 1290]
202
+ ],
186
203
  ScreenSize::IOS_65_MESSAGES => [
187
204
  [1242, 2688],
188
205
  [2688, 1242],
@@ -243,6 +260,10 @@ module Deliver
243
260
  # This list does not include iPad Pro 12.9-inch (3rd generation)
244
261
  # because it has same resoluation as IOS_IPAD_PRO and will clobber
245
262
  return {
263
+ ScreenSize::IOS_67 => [
264
+ [1290, 2796],
265
+ [2796, 1290]
266
+ ],
246
267
  ScreenSize::IOS_65 => [
247
268
  [1242, 2688],
248
269
  [2688, 1242],
@@ -313,6 +334,9 @@ module Deliver
313
334
  ScreenSize::IOS_APPLE_WATCH_SERIES4 => [
314
335
  [368, 448]
315
336
  ],
337
+ ScreenSize::IOS_APPLE_WATCH_SERIES7 => [
338
+ [396, 484]
339
+ ],
316
340
  ScreenSize::APPLE_TV => [
317
341
  [1920, 1080],
318
342
  [3840, 2160]
@@ -322,10 +346,12 @@ module Deliver
322
346
 
323
347
  def self.resolve_ipadpro_conflict_if_needed(screen_size, filename)
324
348
  is_3rd_gen = [
325
- "iPad Pro (12.9-inch) (3rd generation)", # default simulator name has this
326
- "iPad Pro (12.9-inch) (4th generation)", # default simulator name has this
327
- "ipadPro129", # downloaded screenshots name has this,
328
- "3GEN" # downloaded screenshots name from App Store Connect API has this
349
+ "iPad Pro (12.9-inch) (3rd generation)", # Default simulator has this name
350
+ "iPad Pro (12.9-inch) (4th generation)", # Default simulator has this name
351
+ "iPad Pro (12.9-inch) (5th generation)", # Default simulator has this name
352
+ "iPad Pro (12.9-inch) (6th generation)", # Default simulator has this name
353
+ "IPAD_PRO_3GEN_129", # Screenshots downloaded from App Store Connect has this name
354
+ "ipadPro129" # Legacy: screenshots downloaded from iTunes Connect used to have this name
329
355
  ].any? { |key| filename.include?(key) }
330
356
  if is_3rd_gen
331
357
  if screen_size == ScreenSize::IOS_IPAD_PRO
@@ -80,7 +80,7 @@ module Deliver
80
80
  screenshots_per_display_type = screenshots_for_language.reject { |screenshot| screenshot.device_type.nil? }.group_by(&:device_type)
81
81
 
82
82
  screenshots_per_display_type.each do |display_type, screenshots|
83
- # create AppScreenshotSet for given display_type if it doesn't exsit
83
+ # create AppScreenshotSet for given display_type if it doesn't exist
84
84
  app_screenshot_set = (app_screenshot_set_per_locale_and_display_type[language] || {})[display_type]
85
85
  app_screenshot_set ||= localization.create_app_screenshot_set(attributes: { screenshotDisplayType: display_type })
86
86
 
@@ -164,8 +164,7 @@ module Deliver
164
164
  default_value: false),
165
165
  FastlaneCore::ConfigItem.new(key: :sync_screenshots,
166
166
  env_name: "DELIVER_SYNC_SCREENSHOTS",
167
- description: "Sync screenshots with local ones. This is currently beta option" \
168
- "so set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well",
167
+ description: "Sync screenshots with local ones. This is currently beta option so set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well",
169
168
  type: Boolean,
170
169
  default_value: false),
171
170
  FastlaneCore::ConfigItem.new(key: :submit_for_review,
@@ -173,6 +172,11 @@ module Deliver
173
172
  description: "Submit the new version for Review after uploading everything",
174
173
  type: Boolean,
175
174
  default_value: false),
175
+ FastlaneCore::ConfigItem.new(key: :verify_only,
176
+ env_name: "DELIVER_VERIFY_ONLY",
177
+ description: "Verifies archive with App Store Connect without uploading",
178
+ type: Boolean,
179
+ default_value: false),
176
180
  FastlaneCore::ConfigItem.new(key: :reject_if_possible,
177
181
  env_name: "DELIVER_REJECT_IF_POSSIBLE",
178
182
  description: "Rejects the previously submitted build if it's in a state where it's possible",