fastlane 2.202.0 → 2.212.1

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 (184) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +98 -98
  3. data/cert/lib/cert/runner.rb +15 -7
  4. data/deliver/lib/deliver/app_screenshot.rb +18 -0
  5. data/deliver/lib/deliver/options.rb +6 -2
  6. data/deliver/lib/deliver/runner.rb +76 -29
  7. data/deliver/lib/deliver/upload_price_tier.rb +3 -1
  8. data/deliver/lib/deliver/upload_screenshots.rb +1 -1
  9. data/fastlane/lib/assets/AppfileTemplate +1 -1
  10. data/fastlane/lib/assets/AppfileTemplate.swift +1 -1
  11. data/fastlane/lib/fastlane/actions/badge.rb +1 -1
  12. data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/danger.rb +14 -0
  14. data/fastlane/lib/fastlane/actions/docs/build_app.md +5 -5
  15. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +19 -2
  16. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
  17. data/fastlane/lib/fastlane/actions/docs/run_tests.md +1 -1
  18. data/fastlane/lib/fastlane/actions/get_version_number.rb +1 -1
  19. data/fastlane/lib/fastlane/actions/git_commit.rb +4 -6
  20. data/fastlane/lib/fastlane/actions/import_certificate.rb +1 -1
  21. data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +1 -1
  22. data/fastlane/lib/fastlane/actions/pod_push.rb +19 -1
  23. data/fastlane/lib/fastlane/actions/read_podspec.rb +1 -1
  24. data/fastlane/lib/fastlane/actions/run_tests.rb +11 -9
  25. data/fastlane/lib/fastlane/actions/setup_ci.rb +13 -4
  26. data/fastlane/lib/fastlane/actions/trainer.rb +2 -2
  27. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +14 -4
  28. data/fastlane/lib/fastlane/actions/update_info_plist.rb +1 -1
  29. data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +10 -1
  30. data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +1 -1
  31. data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
  32. data/fastlane/lib/fastlane/actions/xcode_install.rb +5 -1
  33. data/fastlane/lib/fastlane/actions/xcode_select.rb +1 -1
  34. data/fastlane/lib/fastlane/actions/xcodebuild.rb +8 -2
  35. data/fastlane/lib/fastlane/actions/xcodes.rb +152 -0
  36. data/fastlane/lib/fastlane/actions/xcversion.rb +10 -15
  37. data/fastlane/lib/fastlane/cli_tools_distributor.rb +5 -0
  38. data/fastlane/lib/fastlane/commands_generator.rb +2 -1
  39. data/fastlane/lib/fastlane/fast_file.rb +18 -5
  40. data/fastlane/lib/fastlane/features.rb +3 -0
  41. data/fastlane/lib/fastlane/helper/xcodes_helper.rb +28 -0
  42. data/fastlane/lib/fastlane/helper/xcversion_helper.rb +0 -9
  43. data/fastlane/lib/fastlane/lane_manager.rb +1 -1
  44. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
  45. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
  46. data/fastlane/lib/fastlane/setup/setup_ios.rb +1 -1
  47. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -1
  48. data/fastlane/lib/fastlane/swift_lane_manager.rb +11 -3
  49. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +54 -1
  50. data/fastlane/lib/fastlane/tools.rb +16 -0
  51. data/fastlane/lib/fastlane/version.rb +1 -1
  52. data/fastlane/swift/Actions.swift +1 -1
  53. data/fastlane/swift/Appfile.swift +2 -2
  54. data/fastlane/swift/ArgumentProcessor.swift +1 -1
  55. data/fastlane/swift/Atomic.swift +150 -0
  56. data/fastlane/swift/ControlCommand.swift +1 -1
  57. data/fastlane/swift/Deliverfile.swift +2 -2
  58. data/fastlane/swift/DeliverfileProtocol.swift +8 -4
  59. data/fastlane/swift/Fastlane.swift +363 -184
  60. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +30 -20
  61. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +1 -1
  62. data/fastlane/swift/Gymfile.swift +2 -2
  63. data/fastlane/swift/GymfileProtocol.swift +7 -3
  64. data/fastlane/swift/LaneFileProtocol.swift +2 -2
  65. data/fastlane/swift/MainProcess.swift +3 -3
  66. data/fastlane/swift/Matchfile.swift +2 -2
  67. data/fastlane/swift/MatchfileProtocol.swift +21 -5
  68. data/fastlane/swift/OptionalConfigValue.swift +1 -1
  69. data/fastlane/swift/Plugins.swift +1 -1
  70. data/fastlane/swift/Precheckfile.swift +2 -2
  71. data/fastlane/swift/PrecheckfileProtocol.swift +3 -3
  72. data/fastlane/swift/RubyCommand.swift +1 -1
  73. data/fastlane/swift/RubyCommandable.swift +1 -1
  74. data/fastlane/swift/Runner.swift +10 -2
  75. data/fastlane/swift/RunnerArgument.swift +1 -1
  76. data/fastlane/swift/Scanfile.swift +2 -2
  77. data/fastlane/swift/ScanfileProtocol.swift +11 -3
  78. data/fastlane/swift/Screengrabfile.swift +2 -2
  79. data/fastlane/swift/ScreengrabfileProtocol.swift +3 -3
  80. data/fastlane/swift/Snapshotfile.swift +2 -2
  81. data/fastlane/swift/SnapshotfileProtocol.swift +4 -4
  82. data/fastlane/swift/SocketClient.swift +9 -5
  83. data/fastlane/swift/SocketClientDelegateProtocol.swift +2 -2
  84. data/fastlane/swift/SocketResponse.swift +1 -1
  85. data/fastlane/swift/formatting/Brewfile.lock.json +42 -24
  86. data/fastlane/swift/main.swift +1 -1
  87. data/fastlane/swift/upgrade_manifest.json +1 -1
  88. data/fastlane_core/README.md +1 -0
  89. data/fastlane_core/lib/fastlane_core/cert_checker.rb +79 -17
  90. data/fastlane_core/lib/fastlane_core/device_manager.rb +5 -1
  91. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +335 -20
  92. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -0
  93. data/fastlane_core/lib/fastlane_core/project.rb +19 -2
  94. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +4 -2
  95. data/frameit/lib/frameit/device.rb +1 -1
  96. data/frameit/lib/frameit/device_types.rb +9 -0
  97. data/frameit/lib/frameit/frame_downloader.rb +1 -1
  98. data/gym/lib/gym/generators/build_command_generator.rb +1 -0
  99. data/gym/lib/gym/options.rb +7 -0
  100. data/match/lib/match/change_password.rb +2 -0
  101. data/match/lib/match/commands_generator.rb +2 -1
  102. data/match/lib/match/encryption/openssl.rb +1 -1
  103. data/match/lib/match/encryption.rb +3 -0
  104. data/match/lib/match/generator.rb +1 -0
  105. data/match/lib/match/importer.rb +10 -1
  106. data/match/lib/match/migrate.rb +4 -3
  107. data/match/lib/match/module.rb +54 -2
  108. data/match/lib/match/nuke.rb +36 -47
  109. data/match/lib/match/options.rb +22 -1
  110. data/match/lib/match/runner.rb +25 -6
  111. data/match/lib/match/setup.rb +1 -1
  112. data/match/lib/match/spaceship_ensure.rb +4 -2
  113. data/match/lib/match/storage/gitlab/client.rb +102 -0
  114. data/match/lib/match/storage/gitlab/secure_file.rb +65 -0
  115. data/match/lib/match/storage/gitlab_secure_files.rb +182 -0
  116. data/match/lib/match/storage/google_cloud_storage.rb +7 -6
  117. data/match/lib/match/storage/s3_storage.rb +3 -3
  118. data/match/lib/match/storage.rb +4 -0
  119. data/match/lib/match/table_printer.rb +2 -1
  120. data/match/lib/match/utils.rb +15 -2
  121. data/pem/lib/pem/manager.rb +1 -1
  122. data/pilot/lib/pilot/build_manager.rb +33 -13
  123. data/pilot/lib/pilot/options.rb +6 -1
  124. data/scan/lib/scan/detect_values.rb +6 -0
  125. data/scan/lib/scan/options.rb +16 -1
  126. data/scan/lib/scan/runner.rb +33 -14
  127. data/scan/lib/scan/test_command_generator.rb +7 -1
  128. data/sigh/lib/sigh/download_all.rb +14 -2
  129. data/sigh/lib/sigh/module.rb +3 -1
  130. data/sigh/lib/sigh/options.rb +5 -0
  131. data/sigh/lib/sigh/runner.rb +12 -2
  132. data/snapshot/lib/assets/SnapshotHelper.swift +3 -3
  133. data/snapshot/lib/snapshot/options.rb +1 -1
  134. data/snapshot/lib/snapshot/reports_generator.rb +1 -0
  135. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +9 -2
  136. data/spaceship/lib/spaceship/client.rb +36 -25
  137. data/spaceship/lib/spaceship/connect_api/api_client.rb +10 -5
  138. data/spaceship/lib/spaceship/connect_api/models/actor.rb +26 -0
  139. data/spaceship/lib/spaceship/connect_api/models/app.rb +7 -5
  140. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +5 -0
  141. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +5 -0
  142. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -1
  143. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +27 -10
  144. data/spaceship/lib/spaceship/connect_api/models/build_bundle.rb +9 -0
  145. data/spaceship/lib/spaceship/connect_api/models/build_bundle_file_sizes.rb +34 -0
  146. data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +2 -1
  147. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +1 -0
  148. data/spaceship/lib/spaceship/connect_api/models/device.rb +47 -4
  149. data/spaceship/lib/spaceship/connect_api/models/profile.rb +4 -0
  150. data/spaceship/lib/spaceship/connect_api/models/resolution_center_message.rb +29 -0
  151. data/spaceship/lib/spaceship/connect_api/models/resolution_center_thread.rb +67 -0
  152. data/spaceship/lib/spaceship/connect_api/models/review_rejection.rb +19 -0
  153. data/spaceship/lib/spaceship/connect_api/models/review_submission.rb +13 -0
  154. data/spaceship/lib/spaceship/connect_api/models/user.rb +5 -0
  155. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +19 -0
  156. data/spaceship/lib/spaceship/connect_api/response.rb +10 -6
  157. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +33 -2
  158. data/spaceship/lib/spaceship/connect_api/token.rb +5 -2
  159. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +41 -8
  160. data/spaceship/lib/spaceship/connect_api.rb +6 -0
  161. data/spaceship/lib/spaceship/errors.rb +34 -0
  162. data/spaceship/lib/spaceship/hashcash.rb +52 -0
  163. data/spaceship/lib/spaceship/portal/certificate.rb +4 -3
  164. data/spaceship/lib/spaceship/tunes/app_ratings.rb +6 -6
  165. data/spaceship/lib/spaceship/tunes/iap_families.rb +1 -1
  166. data/spaceship/lib/spaceship/tunes/tunes.rb +0 -1
  167. data/spaceship/lib/spaceship/tunes/tunes_client.rb +79 -21
  168. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +11 -3
  169. data/spaceship/lib/spaceship.rb +1 -0
  170. data/supply/lib/supply/client.rb +2 -7
  171. data/trainer/lib/assets/junit.xml.erb +9 -1
  172. data/trainer/lib/trainer/junit_generator.rb +2 -2
  173. data/trainer/lib/trainer/options.rb +1 -1
  174. data/trainer/lib/trainer/test_parser.rb +25 -3
  175. metadata +36 -33
  176. data/deliver/lib/deliver/.runner.rb.swp +0 -0
  177. data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
  178. data/fastlane/lib/.DS_Store +0 -0
  179. data/fastlane/lib/fastlane/.DS_Store +0 -0
  180. data/fastlane/lib/fastlane/actions/.DS_Store +0 -0
  181. data/spaceship/lib/spaceship/connect_api/models/.app.rb.swp +0 -0
  182. data/spaceship/lib/spaceship/connect_api/testflight/.testflight.rb.swp +0 -0
  183. data/spaceship/lib/spaceship/tunes/user_detail.rb +0 -15
  184. data/trainer/lib/.DS_Store +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5d4567dd6f8c7aabb3d575822340afb7e2fafa0563eacbcbfe079992eab5a6ec
4
- data.tar.gz: 1fb4e0cbe6e54f38c0bcc425a8f42dcde2ac00b3e8febb9132a0402a46cb8a5c
3
+ metadata.gz: 244364fbe5e40c851dc1afbb79fe8c79ba76fedee6e607d7cf950f043ba7b921
4
+ data.tar.gz: 5f4f4f4462eb64a87ed63df0ece646c100ae8d3a0c37a84eff9cbad76f51c2a8
5
5
  SHA512:
6
- metadata.gz: d61d0fa7b4cb66ef6f9d7e37751df91ebd15da513bcea036c9a96228128462c2414c0534bd141b90c47db9457adab9c00c44a51ce67f93a9d69927918afac29e
7
- data.tar.gz: 663862b46382e41b71729ce28dcfd63c50cf7f89ada3868a053dbfcc72df8d16017d9fde30e7e185c855e5f9ce3225aaace0548703e34a41324f21db35ebbc10
6
+ metadata.gz: ae5c7a99e698db70b74516d415601ee4368fa864cd114a867d44098e0e52a2b68a361fc0178f902c0f0e6fefe3618639a259c92bde33906cb6a0501aa82d18e2
7
+ data.tar.gz: b736ceec481316c6d9cde333299bff4c8145e5b11f5e802acb60a9c59028c9a9444a7a771dcf8f21f952a3cd64e2959e7a87ae224fecad503e34a1d032481123
data/README.md CHANGED
@@ -35,11 +35,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
35
35
  <!-- This table is regenerated and resorted on each release -->
36
36
  <table id='team'>
37
37
  <tr>
38
- <td id='jimmy-dee'>
39
- <a href='https://github.com/jdee'>
40
- <img src='https://github.com/jdee.png' width='140px;'>
38
+ <td id='roger-oba'>
39
+ <a href='https://github.com/rogerluan'>
40
+ <img src='https://github.com/rogerluan.png' width='140px;'>
41
41
  </a>
42
- <h4 align='center'>Jimmy Dee</h4>
42
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
43
43
  </td>
44
44
  <td id='fumiya-nakamura'>
45
45
  <a href='https://github.com/nafu'>
@@ -47,107 +47,101 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
47
47
  </a>
48
48
  <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
49
49
  </td>
50
- <td id='matthew-ellis'>
51
- <a href='https://github.com/matthewellis'>
52
- <img src='https://github.com/matthewellis.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/mellis1995'>Matthew Ellis</a></h4>
54
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
55
55
  </td>
56
- <td id='luka-mirosevic'>
57
- <a href='https://github.com/lmirosevic'>
58
- <img src='https://github.com/lmirosevic.png' width='140px;'>
56
+ <td id='daniel-jankowski'>
57
+ <a href='https://github.com/mollyIV'>
58
+ <img src='https://github.com/mollyIV.png' width='140px;'>
59
59
  </a>
60
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
60
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
61
61
  </td>
62
- <td id='maksym-grebenets'>
63
- <a href='https://github.com/mgrebenets'>
64
- <img src='https://github.com/mgrebenets.png' width='140px;'>
62
+ <td id='jan-piotrowski'>
63
+ <a href='https://github.com/janpio'>
64
+ <img src='https://github.com/janpio.png' width='140px;'>
65
65
  </a>
66
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
67
67
  </td>
68
68
  </tr>
69
69
  <tr>
70
- <td id='stefan-natchev'>
71
- <a href='https://github.com/snatchev'>
72
- <img src='https://github.com/snatchev.png' width='140px;'>
70
+ <td id='satoshi-namai'>
71
+ <a href='https://github.com/ainame'>
72
+ <img src='https://github.com/ainame.png' width='140px;'>
73
73
  </a>
74
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
75
75
  </td>
76
- <td id='helmut-januschka'>
77
- <a href='https://github.com/hjanuschka'>
78
- <img src='https://github.com/hjanuschka.png' width='140px;'>
76
+ <td id='danielle-tomlinson'>
77
+ <a href='https://github.com/endocrimes'>
78
+ <img src='https://github.com/endocrimes.png' width='140px;'>
79
79
  </a>
80
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
80
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
81
81
  </td>
82
- <td id='felix-krause'>
83
- <a href='https://github.com/KrauseFx'>
84
- <img src='https://github.com/KrauseFx.png' width='140px;'>
82
+ <td id='stefan-natchev'>
83
+ <a href='https://github.com/snatchev'>
84
+ <img src='https://github.com/snatchev.png' width='140px;'>
85
85
  </a>
86
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
86
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
87
87
  </td>
88
- <td id='manish-rathi'>
89
- <a href='https://github.com/crazymanish'>
90
- <img src='https://github.com/crazymanish.png' width='140px;'>
88
+ <td id='matthew-ellis'>
89
+ <a href='https://github.com/matthewellis'>
90
+ <img src='https://github.com/matthewellis.png' width='140px;'>
91
91
  </a>
92
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
92
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
93
93
  </td>
94
- <td id='aaron-brager'>
95
- <a href='https://github.com/getaaron'>
96
- <img src='https://github.com/getaaron.png' width='140px;'>
94
+ <td id='iulian-onofrei'>
95
+ <a href='https://github.com/revolter'>
96
+ <img src='https://github.com/revolter.png' width='140px;'>
97
97
  </a>
98
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
98
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
99
99
  </td>
100
100
  </tr>
101
101
  <tr>
102
- <td id='satoshi-namai'>
103
- <a href='https://github.com/ainame'>
104
- <img src='https://github.com/ainame.png' width='140px;'>
102
+ <td id='jorge-revuelta-h'>
103
+ <a href='https://github.com/minuscorp'>
104
+ <img src='https://github.com/minuscorp.png' width='140px;'>
105
105
  </a>
106
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
106
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
107
107
  </td>
108
- <td id='daniel-jankowski'>
109
- <a href='https://github.com/mollyIV'>
110
- <img src='https://github.com/mollyIV.png' width='140px;'>
108
+ <td id='maksym-grebenets'>
109
+ <a href='https://github.com/mgrebenets'>
110
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
111
111
  </a>
112
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
112
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
113
113
  </td>
114
- <td id='jan-piotrowski'>
115
- <a href='https://github.com/janpio'>
116
- <img src='https://github.com/janpio.png' width='140px;'>
114
+ <td id='luka-mirosevic'>
115
+ <a href='https://github.com/lmirosevic'>
116
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
117
117
  </a>
118
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
118
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
119
119
  </td>
120
- <td id='andrew-mcburney'>
121
- <a href='https://github.com/armcburney'>
122
- <img src='https://github.com/armcburney.png' width='140px;'>
120
+ <td id='manish-rathi'>
121
+ <a href='https://github.com/crazymanish'>
122
+ <img src='https://github.com/crazymanish.png' width='140px;'>
123
123
  </a>
124
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
125
125
  </td>
126
- <td id='olivier-halligon'>
127
- <a href='https://github.com/AliSoftware'>
128
- <img src='https://github.com/AliSoftware.png' width='140px;'>
126
+ <td id='felix-krause'>
127
+ <a href='https://github.com/KrauseFx'>
128
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
129
129
  </a>
130
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
130
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
131
131
  </td>
132
132
  </tr>
133
133
  <tr>
134
- <td id='joshua-liebowitz'>
135
- <a href='https://github.com/taquitos'>
136
- <img src='https://github.com/taquitos.png' width='140px;'>
137
- </a>
138
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
139
- </td>
140
- <td id='max-ott'>
141
- <a href='https://github.com/max-ott'>
142
- <img src='https://github.com/max-ott.png' width='140px;'>
134
+ <td id='helmut-januschka'>
135
+ <a href='https://github.com/hjanuschka'>
136
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
143
137
  </a>
144
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
138
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
145
139
  </td>
146
- <td id='iulian-onofrei'>
147
- <a href='https://github.com/revolter'>
148
- <img src='https://github.com/revolter.png' width='140px;'>
140
+ <td id='olivier-halligon'>
141
+ <a href='https://github.com/AliSoftware'>
142
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
149
143
  </a>
150
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
151
145
  </td>
152
146
  <td id='łukasz-grabowski'>
153
147
  <a href='https://github.com/lucgrabowski'>
@@ -155,51 +149,57 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
155
149
  </a>
156
150
  <h4 align='center'>Łukasz Grabowski</h4>
157
151
  </td>
158
- <td id='jorge-revuelta-h'>
159
- <a href='https://github.com/minuscorp'>
160
- <img src='https://github.com/minuscorp.png' width='140px;'>
152
+ <td id='kohki-miki'>
153
+ <a href='https://github.com/giginet'>
154
+ <img src='https://github.com/giginet.png' width='140px;'>
161
155
  </a>
162
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
156
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
157
+ </td>
158
+ <td id='joshua-liebowitz'>
159
+ <a href='https://github.com/taquitos'>
160
+ <img src='https://github.com/taquitos.png' width='140px;'>
161
+ </a>
162
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
163
163
  </td>
164
164
  </tr>
165
165
  <tr>
166
- <td id='josh-holtz'>
167
- <a href='https://github.com/joshdholtz'>
168
- <img src='https://github.com/joshdholtz.png' width='140px;'>
166
+ <td id='jimmy-dee'>
167
+ <a href='https://github.com/jdee'>
168
+ <img src='https://github.com/jdee.png' width='140px;'>
169
169
  </a>
170
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
170
+ <h4 align='center'>Jimmy Dee</h4>
171
171
  </td>
172
- <td id='danielle-tomlinson'>
173
- <a href='https://github.com/endocrimes'>
174
- <img src='https://github.com/endocrimes.png' width='140px;'>
172
+ <td id='manu-wallner'>
173
+ <a href='https://github.com/milch'>
174
+ <img src='https://github.com/milch.png' width='140px;'>
175
175
  </a>
176
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
176
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
177
177
  </td>
178
- <td id='roger-oba'>
179
- <a href='https://github.com/rogerluan'>
180
- <img src='https://github.com/rogerluan.png' width='140px;'>
178
+ <td id='aaron-brager'>
179
+ <a href='https://github.com/getaaron'>
180
+ <img src='https://github.com/getaaron.png' width='140px;'>
181
181
  </a>
182
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
182
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
183
183
  </td>
184
- <td id='jérôme-lacoste'>
185
- <a href='https://github.com/lacostej'>
186
- <img src='https://github.com/lacostej.png' width='140px;'>
184
+ <td id='max-ott'>
185
+ <a href='https://github.com/max-ott'>
186
+ <img src='https://github.com/max-ott.png' width='140px;'>
187
187
  </a>
188
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
188
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
189
189
  </td>
190
- <td id='kohki-miki'>
191
- <a href='https://github.com/giginet'>
192
- <img src='https://github.com/giginet.png' width='140px;'>
190
+ <td id='andrew-mcburney'>
191
+ <a href='https://github.com/armcburney'>
192
+ <img src='https://github.com/armcburney.png' width='140px;'>
193
193
  </a>
194
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
194
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
195
195
  </td>
196
196
  </tr>
197
197
  <tr>
198
- <td id='manu-wallner'>
199
- <a href='https://github.com/milch'>
200
- <img src='https://github.com/milch.png' width='140px;'>
198
+ <td id='jérôme-lacoste'>
199
+ <a href='https://github.com/lacostej'>
200
+ <img src='https://github.com/lacostej.png' width='140px;'>
201
201
  </a>
202
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
202
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
203
203
  </td>
204
204
  </table>
205
205
 
@@ -138,26 +138,34 @@ 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
165
  if !Spaceship::ConnectAPI.token.nil?
158
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"
159
167
  else
160
- return Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_INSTALLER
168
+ return [Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_INSTALLER]
161
169
  end
162
170
  else
163
171
  UI.user_error("Unaccepted value for :type - #{Cert.config[:type]}")
@@ -182,7 +190,7 @@ module Cert
182
190
  end
183
191
  end
184
192
 
185
- return cert_type
193
+ return [cert_type]
186
194
  end
187
195
 
188
196
  def create_certificate
@@ -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"
@@ -101,6 +105,7 @@ module Deliver
101
105
  ScreenSize::IOS_55 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPHONE_55, # also 7 Plus & 8 Plus
102
106
  ScreenSize::IOS_58 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPHONE_58,
103
107
  ScreenSize::IOS_65 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPHONE_65,
108
+ ScreenSize::IOS_67 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPHONE_67,
104
109
  ScreenSize::IOS_IPAD => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPAD_97,
105
110
  ScreenSize::IOS_IPAD_10_5 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPAD_105,
106
111
  ScreenSize::IOS_IPAD_11 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPAD_PRO_3GEN_11,
@@ -111,6 +116,7 @@ module Deliver
111
116
  ScreenSize::IOS_55_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPHONE_55, # also 7 Plus & 8 Plus
112
117
  ScreenSize::IOS_58_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPHONE_58,
113
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,
114
120
  ScreenSize::IOS_IPAD_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_97,
115
121
  ScreenSize::IOS_IPAD_PRO_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_PRO_129,
116
122
  ScreenSize::IOS_IPAD_PRO_12_9_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_PRO_3GEN_129,
@@ -135,6 +141,7 @@ module Deliver
135
141
  ScreenSize::IOS_58 => "iPhone XS",
136
142
  ScreenSize::IOS_61 => "iPhone XR",
137
143
  ScreenSize::IOS_65 => "iPhone XS Max",
144
+ ScreenSize::IOS_67 => "iPhone 14 Pro Max",
138
145
  ScreenSize::IOS_IPAD => "iPad",
139
146
  ScreenSize::IOS_IPAD_10_5 => "iPad 10.5",
140
147
  ScreenSize::IOS_IPAD_11 => "iPad 11",
@@ -146,6 +153,7 @@ module Deliver
146
153
  ScreenSize::IOS_58_MESSAGES => "iPhone XS (iMessage)",
147
154
  ScreenSize::IOS_61_MESSAGES => "iPhone XR (iMessage)",
148
155
  ScreenSize::IOS_65_MESSAGES => "iPhone XS Max (iMessage)",
156
+ ScreenSize::IOS_67_MESSAGES => "iPhone 14 Pro Max (iMessage)",
149
157
  ScreenSize::IOS_IPAD_MESSAGES => "iPad (iMessage)",
150
158
  ScreenSize::IOS_IPAD_PRO_MESSAGES => "iPad Pro (iMessage)",
151
159
  ScreenSize::IOS_IPAD_PRO_12_9_MESSAGES => "iPad Pro (12.9-inch) (3rd generation) (iMessage)",
@@ -175,6 +183,7 @@ module Deliver
175
183
  ScreenSize::IOS_55_MESSAGES,
176
184
  ScreenSize::IOS_58_MESSAGES,
177
185
  ScreenSize::IOS_65_MESSAGES,
186
+ ScreenSize::IOS_67_MESSAGES,
178
187
  ScreenSize::IOS_IPAD_MESSAGES,
179
188
  ScreenSize::IOS_IPAD_PRO_MESSAGES,
180
189
  ScreenSize::IOS_IPAD_PRO_12_9_MESSAGES,
@@ -187,6 +196,10 @@ module Deliver
187
196
  # This list does not include iPad Pro 12.9-inch (3rd generation)
188
197
  # because it has same resoluation as IOS_IPAD_PRO and will clobber
189
198
  return {
199
+ ScreenSize::IOS_67_MESSAGES => [
200
+ [1290, 2796],
201
+ [2796, 1290]
202
+ ],
190
203
  ScreenSize::IOS_65_MESSAGES => [
191
204
  [1242, 2688],
192
205
  [2688, 1242],
@@ -247,6 +260,10 @@ module Deliver
247
260
  # This list does not include iPad Pro 12.9-inch (3rd generation)
248
261
  # because it has same resoluation as IOS_IPAD_PRO and will clobber
249
262
  return {
263
+ ScreenSize::IOS_67 => [
264
+ [1290, 2796],
265
+ [2796, 1290]
266
+ ],
250
267
  ScreenSize::IOS_65 => [
251
268
  [1242, 2688],
252
269
  [2688, 1242],
@@ -332,6 +349,7 @@ module Deliver
332
349
  "iPad Pro (12.9-inch) (3rd generation)", # Default simulator has this name
333
350
  "iPad Pro (12.9-inch) (4th generation)", # Default simulator has this name
334
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
335
353
  "IPAD_PRO_3GEN_129", # Screenshots downloaded from App Store Connect has this name
336
354
  "ipadPro129" # Legacy: screenshots downloaded from iTunes Connect used to have this name
337
355
  ].any? { |key| filename.include?(key) }
@@ -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",
@@ -46,6 +46,12 @@ module Deliver
46
46
  end
47
47
 
48
48
  def run
49
+ if options[:verify_only]
50
+ UI.important("Verify flag is set, only package validation will take place and no submission will be made")
51
+ verify_binary
52
+ return
53
+ end
54
+
49
55
  verify_version if options[:app_version].to_s.length > 0 && !options[:skip_app_version_update]
50
56
 
51
57
  # Rejecting before upload meta
@@ -155,39 +161,74 @@ module Deliver
155
161
  UploadPriceTier.new.upload(options)
156
162
  end
157
163
 
164
+ # Verify the binary with App Store Connect
165
+ def verify_binary
166
+ UI.message("Verifying binary with App Store Connect")
167
+
168
+ ipa_path = options[:ipa]
169
+ pkg_path = options[:pkg]
170
+
171
+ platform = options[:platform]
172
+ transporter = transporter_for_selected_team
173
+
174
+ case platform
175
+ when "ios", "appletvos"
176
+ package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
177
+ app_id: Deliver.cache[:app].id,
178
+ ipa_path: ipa_path,
179
+ package_path: "/tmp",
180
+ platform: platform
181
+ )
182
+ result = transporter.verify(package_path: package_path)
183
+ when "osx"
184
+ package_path = FastlaneCore::PkgUploadPackageBuilder.new.generate(
185
+ app_id: Deliver.cache[:app].id,
186
+ pkg_path: pkg_path,
187
+ package_path: "/tmp",
188
+ platform: platform
189
+ )
190
+ result = transporter.verify(package_path: package_path)
191
+ else
192
+ UI.user_error!("No suitable file found for verify for platform: #{options[:platform]}")
193
+ end
194
+
195
+ unless result
196
+ transporter_errors = transporter.displayable_errors
197
+ UI.user_error!("Error verifying the binary file: \n #{transporter_errors}")
198
+ end
199
+ end
200
+
158
201
  # Upload the binary to App Store Connect
159
202
  def upload_binary
160
203
  UI.message("Uploading binary to App Store Connect")
161
204
 
162
- upload_ipa = options[:ipa]
163
- upload_pkg = options[:pkg]
205
+ ipa_path = options[:ipa]
206
+ pkg_path = options[:pkg]
164
207
 
165
- # 2020-01-27
166
- # Only verify platform if if both ipa and pkg exists (for backwards support)
167
- if upload_ipa && upload_pkg
168
- upload_ipa = ["ios", "appletvos"].include?(options[:platform])
169
- upload_pkg = options[:platform] == "osx"
170
- end
208
+ platform = options[:platform]
209
+ transporter = transporter_for_selected_team(upload: true)
171
210
 
172
- if upload_ipa
211
+ case platform
212
+ when "ios", "appletvos"
173
213
  package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
174
214
  app_id: Deliver.cache[:app].id,
175
- ipa_path: options[:ipa],
215
+ ipa_path: ipa_path,
176
216
  package_path: "/tmp",
177
- platform: options[:platform]
217
+ platform: platform
178
218
  )
179
- elsif upload_pkg
219
+ result = transporter.upload(package_path: package_path, asset_path: ipa_path, platform: platform)
220
+ when "osx"
180
221
  package_path = FastlaneCore::PkgUploadPackageBuilder.new.generate(
181
222
  app_id: Deliver.cache[:app].id,
182
- pkg_path: options[:pkg],
223
+ pkg_path: pkg_path,
183
224
  package_path: "/tmp",
184
- platform: options[:platform]
225
+ platform: platform
185
226
  )
227
+ result = transporter.upload(package_path: package_path, asset_path: pkg_path, platform: platform)
228
+ else
229
+ UI.user_error!("No suitable file found for upload for platform: #{options[:platform]}")
186
230
  end
187
231
 
188
- transporter = transporter_for_selected_team
189
- result = transporter.upload(package_path: package_path, asset_path: upload_ipa || upload_pkg)
190
-
191
232
  unless result
192
233
  transporter_errors = transporter.displayable_errors
193
234
  UI.user_error!("Error uploading ipa file: \n #{transporter_errors}")
@@ -204,13 +245,9 @@ module Deliver
204
245
  UI.message("Review submission cancellation has been requested")
205
246
 
206
247
  # An app version won't get removed from review instantly
207
- # Polling until app version has a state of DEVELOPER_REJECT
248
+ # Polling until there is no longer an in-progress version
208
249
  loop do
209
- version = app.get_edit_app_store_version(platform: platform)
210
- if version.app_store_state == Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::DEVELOPER_REJECTED
211
- break
212
- end
213
-
250
+ break if app.get_in_progress_review_submission(platform: platform).nil?
214
251
  UI.message("Waiting for cancellation to take effect...")
215
252
  sleep(15)
216
253
  end
@@ -229,25 +266,35 @@ module Deliver
229
266
  # If itc_provider was explicitly specified, use it.
230
267
  # If there are multiple teams, infer the provider from the selected team name.
231
268
  # If there are fewer than two teams, don't infer the provider.
232
- def transporter_for_selected_team
269
+ def transporter_for_selected_team(upload: false)
233
270
  # Use JWT auth
234
271
  api_token = Spaceship::ConnectAPI.token
272
+ api_key = if options[:api_key].nil? && !api_token.nil?
273
+ # Load api key info if user set api_key_path, not api_key
274
+ { key_id: api_token.key_id, issuer_id: api_token.issuer_id, key: api_token.key_raw }
275
+ elsif !options[:api_key].nil?
276
+ api_key = options[:api_key].transform_keys(&:to_sym).dup
277
+ # key is still base 64 style if api_key is loaded from option
278
+ api_key[:key] = Base64.decode64(api_key[:key]) if api_key[:is_key_content_base64]
279
+ api_key
280
+ end
281
+
235
282
  unless api_token.nil?
236
283
  api_token.refresh! if api_token.expired?
237
- return FastlaneCore::ItunesTransporter.new(nil, nil, false, nil, api_token.text)
284
+ return FastlaneCore::ItunesTransporter.new(nil, nil, false, nil, api_token.text, upload: upload, api_key: api_key)
238
285
  end
239
286
 
240
287
  tunes_client = Spaceship::ConnectAPI.client.tunes_client
241
288
 
242
- generic_transporter = FastlaneCore::ItunesTransporter.new(options[:username], nil, false, options[:itc_provider])
289
+ generic_transporter = FastlaneCore::ItunesTransporter.new(options[:username], nil, false, options[:itc_provider], upload: upload, api_key: api_key)
243
290
  return generic_transporter unless options[:itc_provider].nil? && tunes_client.teams.count > 1
244
291
 
245
292
  begin
246
- team = tunes_client.teams.find { |t| t['contentProvider']['contentProviderId'].to_s == tunes_client.team_id }
247
- name = team['contentProvider']['name']
293
+ team = tunes_client.teams.find { |t| t['providerId'].to_s == tunes_client.team_id }
294
+ name = team['name']
248
295
  provider_id = generic_transporter.provider_ids[name]
249
296
  UI.verbose("Inferred provider id #{provider_id} for team #{name}.")
250
- return FastlaneCore::ItunesTransporter.new(options[:username], nil, false, provider_id)
297
+ return FastlaneCore::ItunesTransporter.new(options[:username], nil, false, provider_id, upload: upload, api_key: api_key)
251
298
  rescue => ex
252
299
  UI.verbose("Couldn't infer a provider short name for team with id #{tunes_client.team_id} automatically: #{ex}. Proceeding without provider short name.")
253
300
  return generic_transporter
@@ -12,7 +12,9 @@ module Deliver
12
12
  app = Deliver.cache[:app]
13
13
 
14
14
  attributes = {}
15
- territory_ids = []
15
+
16
+ # Check App update method to understand how to use territory_ids.
17
+ territory_ids = nil # nil won't update app's territory_ids, empty array would remove app from sale.
16
18
 
17
19
  # As of 2020-09-14:
18
20
  # Official App Store Connect does not have an endpoint to get app prices for an app
@@ -145,7 +145,7 @@ module Deliver
145
145
  if duplicate
146
146
  UI.message("Previous uploaded. Skipping '#{screenshot.path}'...")
147
147
  else
148
- UI.verbose("Queued uplaod sceeenshot job for #{localization.locale} #{app_screenshot_set.screenshot_display_type} #{screenshot.path}")
148
+ UI.verbose("Queued upload sceeenshot job for #{localization.locale} #{app_screenshot_set.screenshot_display_type} #{screenshot.path}")
149
149
  worker.enqueue(UploadScreenshotJob.new(app_screenshot_set, screenshot.path))
150
150
  number_of_screenshots_per_set[app_screenshot_set] += 1
151
151
  end
@@ -1,5 +1,5 @@
1
1
  # app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app
2
- # apple_id("[[APPLE_ID]]") # Your Apple email address
2
+ # apple_id("[[APPLE_ID]]") # Your Apple Developer Portal username
3
3
 
4
4
  [[TEAMS]]
5
5
  # For more information about the Appfile, see: