fastlane 2.220.0 → 2.221.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +100 -100
  3. data/deliver/lib/deliver/options.rb +1 -1
  4. data/deliver/lib/deliver/submit_for_review.rb +2 -79
  5. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +2 -1
  6. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +3 -3
  7. data/fastlane/lib/fastlane/actions/spm.rb +7 -0
  8. data/fastlane/lib/fastlane/lane_manager_base.rb +16 -8
  9. data/fastlane/lib/fastlane/runner.rb +2 -2
  10. data/fastlane/lib/fastlane/version.rb +1 -1
  11. data/fastlane/swift/Deliverfile.swift +1 -1
  12. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  13. data/fastlane/swift/Fastlane.swift +12 -8
  14. data/fastlane/swift/Gymfile.swift +1 -1
  15. data/fastlane/swift/GymfileProtocol.swift +1 -1
  16. data/fastlane/swift/Matchfile.swift +1 -1
  17. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  18. data/fastlane/swift/Precheckfile.swift +1 -1
  19. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  20. data/fastlane/swift/Scanfile.swift +1 -1
  21. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  22. data/fastlane/swift/Screengrabfile.swift +1 -1
  23. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  24. data/fastlane/swift/Snapshotfile.swift +1 -1
  25. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  26. data/fastlane/swift/formatting/Brewfile.lock.json +19 -19
  27. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +2 -0
  28. data/match/lib/match/runner.rb +0 -1
  29. data/pilot/lib/pilot/build_manager.rb +9 -4
  30. data/spaceship/lib/spaceship/connect_api/api_client.rb +1 -1
  31. data/spaceship/lib/spaceship/connect_api/models/app.rb +28 -33
  32. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -19
  33. data/spaceship/lib/spaceship/connect_api/provisioning/client.rb +1 -1
  34. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +31 -22
  35. data/spaceship/lib/spaceship/connect_api/testflight/client.rb +1 -1
  36. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +47 -43
  37. data/spaceship/lib/spaceship/connect_api/token.rb +7 -2
  38. data/spaceship/lib/spaceship/connect_api/tunes/client.rb +1 -1
  39. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +92 -131
  40. data/spaceship/lib/spaceship/connect_api/users/client.rb +1 -1
  41. data/spaceship/lib/spaceship/connect_api/users/users.rb +15 -11
  42. data/spaceship/lib/spaceship/connect_api.rb +0 -1
  43. data/spaceship/lib/spaceship/stats_middleware.rb +2 -2
  44. data/spaceship/lib/spaceship/tunes/app_submission.rb +0 -19
  45. metadata +23 -24
  46. data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +0 -43
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eec1401cd6a8a8a9e9c48fed9969a6ab44348fa672c2b75464b3265000dab288
4
- data.tar.gz: 1c7bc580641838525e4705a83633da89a38f225dfaea07ba9ee1ee2f54e8676c
3
+ metadata.gz: 6f07b93540a18ca9244d03f38d6b42715da53a5f3a1d2e01ae0ca07f55b8bbfc
4
+ data.tar.gz: 02a85c5ddcb83eb661020c053b2c33411d0f2b4e69bf309a2f5dff62c7376b11
5
5
  SHA512:
6
- metadata.gz: 3d88cbca7c40d2882d7442db21b0725b2da0e641f267f0c581cd2c7344a5e220a46cdd84eae861609d0ed9940226953cb6a03094d6b0019eaca578e7fb6872ae
7
- data.tar.gz: 830456faecb0a07cfda4f48d7e5bb6ea0fa558553a43ae59f18a2ae702062d6202d31f2285dc4bea2310bceb890cfde6fc848ebcfeb0dbc71eb4911938a018e7
6
+ metadata.gz: f36be8c3a80185881f79dd332a09e51e3d6a5b512e5571a2dc8c5eb70f38bc0c74cfa862329befbc43f8f4c0fd771ed40a579b23371d12463a1a27921b1e1e85
7
+ data.tar.gz: aabf80f68459a5dbffd434963f317755828a18d81ed00e4d5a2a9f0fc6123eeb48d1066b2b4517a6c69ba10252e4a03ea55acf28442d886b23fb243f9a20263c
data/README.md CHANGED
@@ -35,43 +35,23 @@ 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='iulian-onofrei'>
39
- <a href='https://github.com/revolter'>
40
- <img src='https://github.com/revolter.png' width='140px;'>
41
- </a>
42
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
43
- </td>
44
- <td id='manu-wallner'>
45
- <a href='https://github.com/milch'>
46
- <img src='https://github.com/milch.png' width='140px;'>
47
- </a>
48
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
49
- </td>
50
- <td id='fumiya-nakamura'>
51
- <a href='https://github.com/nafu'>
52
- <img src='https://github.com/nafu.png' width='140px;'>
53
- </a>
54
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
55
- </td>
56
- <td id='helmut-januschka'>
57
- <a href='https://github.com/hjanuschka'>
58
- <img src='https://github.com/hjanuschka.png' width='140px;'>
38
+ <td id='matthew-ellis'>
39
+ <a href='https://github.com/matthewellis'>
40
+ <img src='https://github.com/matthewellis.png' width='140px;'>
59
41
  </a>
60
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
61
43
  </td>
62
- <td id='jorge-revuelta-h'>
63
- <a href='https://github.com/minuscorp'>
64
- <img src='https://github.com/minuscorp.png' width='140px;'>
44
+ <td id='roger-oba'>
45
+ <a href='https://github.com/rogerluan'>
46
+ <img src='https://github.com/rogerluan.png' width='140px;'>
65
47
  </a>
66
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
48
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
67
49
  </td>
68
- </tr>
69
- <tr>
70
- <td id='jan-piotrowski'>
71
- <a href='https://github.com/janpio'>
72
- <img src='https://github.com/janpio.png' width='140px;'>
50
+ <td id='luka-mirosevic'>
51
+ <a href='https://github.com/lmirosevic'>
52
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
73
53
  </a>
74
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
54
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
75
55
  </td>
76
56
  <td id='daniel-jankowski'>
77
57
  <a href='https://github.com/mollyIV'>
@@ -79,37 +59,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
79
59
  </a>
80
60
  <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
81
61
  </td>
82
- <td id='łukasz-grabowski'>
83
- <a href='https://github.com/lucgrabowski'>
84
- <img src='https://github.com/lucgrabowski.png' width='140px;'>
85
- </a>
86
- <h4 align='center'>Łukasz Grabowski</h4>
87
- </td>
88
- <td id='maksym-grebenets'>
89
- <a href='https://github.com/mgrebenets'>
90
- <img src='https://github.com/mgrebenets.png' width='140px;'>
91
- </a>
92
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
93
- </td>
94
- <td id='stefan-natchev'>
95
- <a href='https://github.com/snatchev'>
96
- <img src='https://github.com/snatchev.png' width='140px;'>
62
+ <td id='fumiya-nakamura'>
63
+ <a href='https://github.com/nafu'>
64
+ <img src='https://github.com/nafu.png' width='140px;'>
97
65
  </a>
98
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
99
67
  </td>
100
68
  </tr>
101
69
  <tr>
102
- <td id='josh-holtz'>
103
- <a href='https://github.com/joshdholtz'>
104
- <img src='https://github.com/joshdholtz.png' width='140px;'>
70
+ <td id='olivier-halligon'>
71
+ <a href='https://github.com/AliSoftware'>
72
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
105
73
  </a>
106
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
107
75
  </td>
108
- <td id='manish-rathi'>
109
- <a href='https://github.com/crazymanish'>
110
- <img src='https://github.com/crazymanish.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;'>
111
79
  </a>
112
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
80
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
113
81
  </td>
114
82
  <td id='felix-krause'>
115
83
  <a href='https://github.com/KrauseFx'>
@@ -123,37 +91,57 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
123
91
  </a>
124
92
  <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
125
93
  </td>
126
- <td id='joshua-liebowitz'>
127
- <a href='https://github.com/taquitos'>
128
- <img src='https://github.com/taquitos.png' width='140px;'>
94
+ <td id='jimmy-dee'>
95
+ <a href='https://github.com/jdee'>
96
+ <img src='https://github.com/jdee.png' width='140px;'>
129
97
  </a>
130
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
98
+ <h4 align='center'>Jimmy Dee</h4>
131
99
  </td>
132
100
  </tr>
133
101
  <tr>
134
- <td id='aaron-brager'>
135
- <a href='https://github.com/getaaron'>
136
- <img src='https://github.com/getaaron.png' width='140px;'>
102
+ <td id='manish-rathi'>
103
+ <a href='https://github.com/crazymanish'>
104
+ <img src='https://github.com/crazymanish.png' width='140px;'>
137
105
  </a>
138
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
106
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
139
107
  </td>
140
- <td id='roger-oba'>
141
- <a href='https://github.com/rogerluan'>
142
- <img src='https://github.com/rogerluan.png' width='140px;'>
108
+ <td id='jorge-revuelta-h'>
109
+ <a href='https://github.com/minuscorp'>
110
+ <img src='https://github.com/minuscorp.png' width='140px;'>
143
111
  </a>
144
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
112
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
145
113
  </td>
146
- <td id='luka-mirosevic'>
147
- <a href='https://github.com/lmirosevic'>
148
- <img src='https://github.com/lmirosevic.png' width='140px;'>
114
+ <td id='jan-piotrowski'>
115
+ <a href='https://github.com/janpio'>
116
+ <img src='https://github.com/janpio.png' width='140px;'>
149
117
  </a>
150
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
118
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
151
119
  </td>
152
- <td id='matthew-ellis'>
153
- <a href='https://github.com/matthewellis'>
154
- <img src='https://github.com/matthewellis.png' width='140px;'>
120
+ <td id='jérôme-lacoste'>
121
+ <a href='https://github.com/lacostej'>
122
+ <img src='https://github.com/lacostej.png' width='140px;'>
155
123
  </a>
156
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
125
+ </td>
126
+ <td id='andrew-mcburney'>
127
+ <a href='https://github.com/armcburney'>
128
+ <img src='https://github.com/armcburney.png' width='140px;'>
129
+ </a>
130
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
131
+ </td>
132
+ </tr>
133
+ <tr>
134
+ <td id='josh-holtz'>
135
+ <a href='https://github.com/joshdholtz'>
136
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
137
+ </a>
138
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
139
+ </td>
140
+ <td id='łukasz-grabowski'>
141
+ <a href='https://github.com/lucgrabowski'>
142
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
143
+ </a>
144
+ <h4 align='center'>Łukasz Grabowski</h4>
157
145
  </td>
158
146
  <td id='satoshi-namai'>
159
147
  <a href='https://github.com/ainame'>
@@ -161,45 +149,57 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
161
149
  </a>
162
150
  <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
163
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='iulian-onofrei'>
159
+ <a href='https://github.com/revolter'>
160
+ <img src='https://github.com/revolter.png' width='140px;'>
161
+ </a>
162
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
163
+ </td>
164
164
  </tr>
165
165
  <tr>
166
- <td id='jimmy-dee'>
167
- <a href='https://github.com/jdee'>
168
- <img src='https://github.com/jdee.png' width='140px;'>
166
+ <td id='maksym-grebenets'>
167
+ <a href='https://github.com/mgrebenets'>
168
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
169
169
  </a>
170
- <h4 align='center'>Jimmy Dee</h4>
170
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
171
171
  </td>
172
- <td id='max-ott'>
173
- <a href='https://github.com/max-ott'>
174
- <img src='https://github.com/max-ott.png' width='140px;'>
172
+ <td id='stefan-natchev'>
173
+ <a href='https://github.com/snatchev'>
174
+ <img src='https://github.com/snatchev.png' width='140px;'>
175
175
  </a>
176
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
176
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
177
177
  </td>
178
- <td id='jérôme-lacoste'>
179
- <a href='https://github.com/lacostej'>
180
- <img src='https://github.com/lacostej.png' width='140px;'>
178
+ <td id='helmut-januschka'>
179
+ <a href='https://github.com/hjanuschka'>
180
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
181
181
  </a>
182
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
182
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
183
183
  </td>
184
- <td id='olivier-halligon'>
185
- <a href='https://github.com/AliSoftware'>
186
- <img src='https://github.com/AliSoftware.png' width='140px;'>
184
+ <td id='manu-wallner'>
185
+ <a href='https://github.com/milch'>
186
+ <img src='https://github.com/milch.png' width='140px;'>
187
187
  </a>
188
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
188
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
189
189
  </td>
190
- <td id='danielle-tomlinson'>
191
- <a href='https://github.com/endocrimes'>
192
- <img src='https://github.com/endocrimes.png' width='140px;'>
190
+ <td id='max-ott'>
191
+ <a href='https://github.com/max-ott'>
192
+ <img src='https://github.com/max-ott.png' width='140px;'>
193
193
  </a>
194
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
194
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
195
195
  </td>
196
196
  </tr>
197
197
  <tr>
198
- <td id='andrew-mcburney'>
199
- <a href='https://github.com/armcburney'>
200
- <img src='https://github.com/armcburney.png' width='140px;'>
198
+ <td id='joshua-liebowitz'>
199
+ <a href='https://github.com/taquitos'>
200
+ <img src='https://github.com/taquitos.png' width='140px;'>
201
201
  </a>
202
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
202
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
203
203
  </td>
204
204
  </table>
205
205
 
@@ -249,7 +249,7 @@ module Deliver
249
249
  end),
250
250
  FastlaneCore::ConfigItem.new(key: :submission_information,
251
251
  short_option: "-b",
252
- description: "Extra information for the submission (e.g. compliance specifications, IDFA settings)",
252
+ description: "Extra information for the submission (e.g. compliance specifications)",
253
253
  type: Hash,
254
254
  optional: true),
255
255
 
@@ -20,7 +20,6 @@ module Deliver
20
20
  build = select_build(options, app, version, platform)
21
21
 
22
22
  update_export_compliance(options, app, build)
23
- update_idfa(options, app, version)
24
23
  update_submission_information(options, app)
25
24
 
26
25
  create_review_submission(options, app, version, platform)
@@ -51,11 +50,11 @@ module Deliver
51
50
  10.times do
52
51
  version_with_latest_info = Spaceship::ConnectAPI::AppStoreVersion.get(app_store_version_id: version.id)
53
52
 
54
- if version_with_latest_info.app_store_state == Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::READY_FOR_REVIEW
53
+ if version_with_latest_info.app_version_state == Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::READY_FOR_REVIEW
55
54
  break
56
55
  end
57
56
 
58
- UI.message("Waiting for the state of the version to become #{Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::READY_FOR_REVIEW}...")
57
+ UI.message("Waiting for the state of the version to become #{Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::READY_FOR_REVIEW}...")
59
58
 
60
59
  sleep(15)
61
60
  end
@@ -120,82 +119,6 @@ module Deliver
120
119
  end
121
120
  end
122
121
 
123
- def update_idfa(options, app, version)
124
- submission_information = options[:submission_information] || {}
125
- submission_information = submission_information.transform_keys(&:to_sym)
126
-
127
- uses_idfa = submission_information[:add_id_info_uses_idfa]
128
-
129
- idfa_declaration = begin
130
- version.fetch_idfa_declaration
131
- rescue
132
- nil
133
- end
134
-
135
- updated_idfa = false
136
-
137
- # Set IDFA on version
138
- unless uses_idfa.nil?
139
- UI.verbose("Updating app store version for IDFA status of '#{uses_idfa}'")
140
- version = version.update(attributes: {
141
- usesIdfa: uses_idfa
142
- })
143
- UI.verbose("Updated app store version for IDFA status of '#{version.uses_idfa}'")
144
- updated_idfa = true
145
- end
146
-
147
- # Error if uses_idfa not set
148
- if version.uses_idfa.nil?
149
- message = [
150
- "Use of Advertising Identifier (IDFA) is required to submit",
151
- "Add information to the :submission_information option...",
152
- " Docs: http://docs.fastlane.tools/actions/deliver/#compliance-and-idfa-settings",
153
- " Example: submission_information: { add_id_info_uses_idfa: false }",
154
- " Example: submission_information: {",
155
- " add_id_info_uses_idfa: true,",
156
- " add_id_info_serves_ads: false,",
157
- " add_id_info_tracks_install: true,",
158
- " add_id_info_tracks_action: true,",
159
- " add_id_info_limits_tracking: true",
160
- " }",
161
- " Example CLI:",
162
- " --submission_information \"{\\\"add_id_info_uses_idfa\\\": false}\""
163
- ].join("\n")
164
- UI.user_error!(message)
165
- end
166
-
167
- # Create, update, or delete IDFA declaration
168
- if uses_idfa == false
169
- if idfa_declaration
170
- UI.verbose("Deleting IDFA declaration")
171
- idfa_declaration.delete!
172
- updated_idfa = true
173
- UI.verbose("Deleted IDFA declaration")
174
- end
175
- elsif uses_idfa == true
176
- attributes = {
177
- honorsLimitedAdTracking: !!submission_information[:add_id_info_limits_tracking],
178
- servesAds: !!submission_information[:add_id_info_serves_ads],
179
- attributesAppInstallationToPreviousAd: !!submission_information[:add_id_info_tracks_install],
180
- attributesActionWithPreviousAd: !!submission_information[:add_id_info_tracks_action]
181
- }
182
-
183
- if idfa_declaration
184
- UI.verbose("Updating IDFA declaration")
185
- idfa_declaration.update(attributes: attributes)
186
- UI.verbose("Updated IDFA declaration")
187
- else
188
- UI.verbose("Creating IDFA declaration")
189
- version.create_idfa_declaration(attributes: attributes)
190
- UI.verbose("Created IDFA declaration")
191
- end
192
-
193
- updated_idfa = true
194
- end
195
-
196
- UI.success("Successfully updated IDFA declarations on App Store Connect") if updated_idfa
197
- end
198
-
199
122
  def update_submission_information(options, app)
200
123
  submission_information = options[:submission_information] || {}
201
124
  submission_information = submission_information.transform_keys(&:to_sym)
@@ -56,7 +56,8 @@ module Fastlane
56
56
  description: "The key ID"),
57
57
  FastlaneCore::ConfigItem.new(key: :issuer_id,
58
58
  env_name: "APP_STORE_CONNECT_API_KEY_ISSUER_ID",
59
- description: "The issuer ID"),
59
+ description: "The issuer ID. It can be nil if the key is individual API key",
60
+ optional: true),
60
61
  FastlaneCore::ConfigItem.new(key: :key_filepath,
61
62
  env_name: "APP_STORE_CONNECT_API_KEY_KEY_FILEPATH",
62
63
  description: "The path to the key p8 file",
@@ -431,12 +431,12 @@ end
431
431
 
432
432
  Omit `build_number` to let _fastlane_ automatically select the latest build number for the current version being edited for release from App Store Connect.
433
433
 
434
- ### Compliance and IDFA settings
434
+ ### Compliance settings
435
435
 
436
- Use the `submission_information` parameter for additional submission specifiers, including compliance and IDFA settings. Look at the Spaceship's [`app_submission.rb`](https://github.com/fastlane/fastlane/blob/master/spaceship/lib/spaceship/tunes/app_submission.rb) file for options. See [this example](https://github.com/artsy/eigen/blob/faa02e2746194d8d7c11899474de9c517435eca4/fastlane/Fastfile#L131-L149).
436
+ Use the `submission_information` parameter for additional submission specifiers, including compliance settings. Look at the Spaceship's [`app_submission.rb`](https://github.com/fastlane/fastlane/blob/master/spaceship/lib/spaceship/tunes/app_submission.rb) file for options. See [this example](https://github.com/artsy/eigen/blob/faa02e2746194d8d7c11899474de9c517435eca4/fastlane/Fastfile#L131-L149).
437
437
 
438
438
  ```no-highlight
439
- fastlane deliver submit_build --build_number 830 --submission_information "{\"export_compliance_uses_encryption\": false, \"add_id_info_uses_idfa\": false }"
439
+ fastlane deliver submit_build --build_number 830 --submission_information "{\"export_compliance_uses_encryption\": false }"
440
440
  ```
441
441
 
442
442
  ### App Privacy Details
@@ -11,6 +11,7 @@ module Fastlane
11
11
  cmd << "--configuration #{params[:configuration]}" if params[:configuration]
12
12
  cmd << "--disable-sandbox" if params[:disable_sandbox]
13
13
  cmd << "--verbose" if params[:verbose]
14
+ cmd << "--very-verbose" if params[:very_verbose]
14
15
  if params[:simulator]
15
16
  simulator_platform = simulator_platform(simulator: params[:simulator], simulator_arch: params[:simulator_arch])
16
17
  simulator_sdk = simulator_sdk(simulator: params[:simulator])
@@ -118,6 +119,12 @@ module Fastlane
118
119
  description: "Increase verbosity of informational output",
119
120
  type: Boolean,
120
121
  default_value: false),
122
+ FastlaneCore::ConfigItem.new(key: :very_verbose,
123
+ short_option: "-V",
124
+ env_name: "FL_SPM_VERY_VERBOSE",
125
+ description: "Increase verbosity to include debug output",
126
+ type: Boolean,
127
+ default_value: false),
121
128
  FastlaneCore::ConfigItem.new(key: :simulator,
122
129
  env_name: "FL_SPM_SIMULATOR",
123
130
  description: "Specifies the simulator to pass for Swift Compiler (one of: #{valid_simulators.join(', ')})",
@@ -78,15 +78,23 @@ module Fastlane
78
78
  end
79
79
 
80
80
  def self.print_error_line(ex)
81
- error_line = ex.backtrace.first
82
- return if error_line.nil?
83
-
84
- error_line = error_line.match("Fastfile:(\\d+):")
85
- return unless error_line
81
+ lines = ex.backtrace_locations&.select { |loc| loc.path == 'Fastfile' }&.map(&:lineno)
82
+ return if lines.nil? || lines.empty?
83
+
84
+ fastfile_content = File.read(FastlaneCore::FastlaneFolder.fastfile_path, encoding: "utf-8")
85
+ if ex.backtrace_locations.first&.path == 'Fastfile'
86
+ # If exception happened directly in the Fastfile itself (e.g. ArgumentError)
87
+ UI.error("Error in your Fastfile at line #{lines.first}")
88
+ UI.content_error(fastfile_content, lines.first)
89
+ lines.shift
90
+ end
86
91
 
87
- line = error_line[1]
88
- UI.error("Error in your Fastfile at line #{line}")
89
- UI.content_error(File.read(FastlaneCore::FastlaneFolder.fastfile_path, encoding: "utf-8"), line)
92
+ unless lines.empty?
93
+ # If exception happened directly in the Fastfile, also print the caller (still from the Fastfile).
94
+ # If exception happened in _fastlane_ internal code, print the line from the Fastfile that called it
95
+ UI.error("Called from Fastfile at line #{lines.first}")
96
+ UI.content_error(fastfile_content, lines.first)
97
+ end
90
98
  end
91
99
  end
92
100
  end
@@ -40,13 +40,13 @@ module Fastlane
40
40
  return_val = nil
41
41
 
42
42
  path_to_use = FastlaneCore::FastlaneFolder.path || Dir.pwd
43
- parameters ||= {}
43
+ parameters ||= {} # by default no parameters
44
44
  begin
45
45
  Dir.chdir(path_to_use) do # the file is located in the fastlane folder
46
46
  execute_flow_block(before_all_blocks, current_platform, current_lane, parameters)
47
47
  execute_flow_block(before_each_blocks, current_platform, current_lane, parameters)
48
48
 
49
- return_val = lane_obj.call(parameters) # by default no parameters
49
+ return_val = lane_obj.call(parameters)
50
50
 
51
51
  # after blocks are only called if no exception was raised before
52
52
  # Call the platform specific after block and then the general one
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.220.0'.freeze
2
+ VERSION = '2.221.1'.freeze
3
3
  SUMMARY = "The easiest way to build and release mobile apps.".freeze
4
4
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
5
5
  MINIMUM_XCODE_RELEASE = "7.0".freeze
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.220.0
20
+ // Generated with fastlane 2.221.1
@@ -95,7 +95,7 @@ public protocol DeliverfileProtocol: AnyObject {
95
95
  /// Path to the app rating's config
96
96
  var appRatingConfigPath: String? { get }
97
97
 
98
- /// Extra information for the submission (e.g. compliance specifications, IDFA settings)
98
+ /// Extra information for the submission (e.g. compliance specifications)
99
99
  var submissionInformation: [String: Any]? { get }
100
100
 
101
101
  /// The ID of your App Store Connect team if you're in multiple teams
@@ -272,4 +272,4 @@ public extension DeliverfileProtocol {
272
272
 
273
273
  // Please don't remove the lines below
274
274
  // They are used to detect outdated files
275
- // FastlaneRunnerAPIVersion [0.9.124]
275
+ // FastlaneRunnerAPIVersion [0.9.126]
@@ -190,7 +190,7 @@ public func appStoreBuildNumber(apiKeyPath: OptionalConfigValue<String?> = .fast
190
190
 
191
191
  - parameters:
192
192
  - keyId: The key ID
193
- - issuerId: The issuer ID
193
+ - issuerId: The issuer ID. It can be nil if the key is individual API key
194
194
  - keyFilepath: The path to the key p8 file
195
195
  - keyContent: The content of the key p8 file
196
196
  - isKeyContentBase64: Whether :key_content is Base64 encoded or not
@@ -201,7 +201,7 @@ public func appStoreBuildNumber(apiKeyPath: OptionalConfigValue<String?> = .fast
201
201
  Load the App Store Connect API token to use in other fastlane tools and actions
202
202
  */
203
203
  public func appStoreConnectApiKey(keyId: String,
204
- issuerId: String,
204
+ issuerId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
205
205
  keyFilepath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
206
206
  keyContent: OptionalConfigValue<String?> = .fastlaneDefault(nil),
207
207
  isKeyContentBase64: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -210,7 +210,7 @@ public func appStoreConnectApiKey(keyId: String,
210
210
  setSpaceshipToken: OptionalConfigValue<Bool> = .fastlaneDefault(true))
211
211
  {
212
212
  let keyIdArg = RubyCommand.Argument(name: "key_id", value: keyId, type: nil)
213
- let issuerIdArg = RubyCommand.Argument(name: "issuer_id", value: issuerId, type: nil)
213
+ let issuerIdArg = issuerId.asRubyArgument(name: "issuer_id", type: nil)
214
214
  let keyFilepathArg = keyFilepath.asRubyArgument(name: "key_filepath", type: nil)
215
215
  let keyContentArg = keyContent.asRubyArgument(name: "key_content", type: nil)
216
216
  let isKeyContentBase64Arg = isKeyContentBase64.asRubyArgument(name: "is_key_content_base64", type: nil)
@@ -674,7 +674,7 @@ public func appledoc(input: [String],
674
674
  - resetRatings: Reset the summary rating when you release a new version of the application
675
675
  - priceTier: The price tier of this application
676
676
  - appRatingConfigPath: Path to the app rating's config
677
- - submissionInformation: Extra information for the submission (e.g. compliance specifications, IDFA settings)
677
+ - submissionInformation: Extra information for the submission (e.g. compliance specifications)
678
678
  - teamId: The ID of your App Store Connect team if you're in multiple teams
679
679
  - teamName: The name of your App Store Connect team if you're in multiple teams
680
680
  - devPortalTeamId: The short ID of your Developer Portal team, if you're in multiple teams. Different from your iTC team ID!
@@ -3714,7 +3714,7 @@ public func deleteKeychain(name: OptionalConfigValue<String?> = .fastlaneDefault
3714
3714
  - resetRatings: Reset the summary rating when you release a new version of the application
3715
3715
  - priceTier: The price tier of this application
3716
3716
  - appRatingConfigPath: Path to the app rating's config
3717
- - submissionInformation: Extra information for the submission (e.g. compliance specifications, IDFA settings)
3717
+ - submissionInformation: Extra information for the submission (e.g. compliance specifications)
3718
3718
  - teamId: The ID of your App Store Connect team if you're in multiple teams
3719
3719
  - teamName: The name of your App Store Connect team if you're in multiple teams
3720
3720
  - devPortalTeamId: The short ID of your Developer Portal team, if you're in multiple teams. Different from your iTC team ID!
@@ -10938,6 +10938,7 @@ public func splunkmint(dsym: OptionalConfigValue<String?> = .fastlaneDefault(nil
10938
10938
  - xcprettyOutput: Specifies the output type for xcpretty. eg. 'test', or 'simple'
10939
10939
  - xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf'), requires xcpretty_output to be specified also
10940
10940
  - verbose: Increase verbosity of informational output
10941
+ - veryVerbose: Increase verbosity to include debug output
10941
10942
  - simulator: Specifies the simulator to pass for Swift Compiler (one of: iphonesimulator, macosx)
10942
10943
  - simulatorArch: Specifies the architecture of the simulator to pass for Swift Compiler (one of: x86_64, arm64). Requires the simulator option to be specified also, otherwise, it's ignored
10943
10944
  */
@@ -10953,6 +10954,7 @@ public func spm(command: String = "build",
10953
10954
  xcprettyOutput: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10954
10955
  xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10955
10956
  verbose: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10957
+ veryVerbose: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10956
10958
  simulator: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10957
10959
  simulatorArch: String = "arm64")
10958
10960
  {
@@ -10968,6 +10970,7 @@ public func spm(command: String = "build",
10968
10970
  let xcprettyOutputArg = xcprettyOutput.asRubyArgument(name: "xcpretty_output", type: nil)
10969
10971
  let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
10970
10972
  let verboseArg = verbose.asRubyArgument(name: "verbose", type: nil)
10973
+ let veryVerboseArg = veryVerbose.asRubyArgument(name: "very_verbose", type: nil)
10971
10974
  let simulatorArg = simulator.asRubyArgument(name: "simulator", type: nil)
10972
10975
  let simulatorArchArg = RubyCommand.Argument(name: "simulator_arch", value: simulatorArch, type: nil)
10973
10976
  let array: [RubyCommand.Argument?] = [commandArg,
@@ -10982,6 +10985,7 @@ public func spm(command: String = "build",
10982
10985
  xcprettyOutputArg,
10983
10986
  xcprettyArgsArg,
10984
10987
  verboseArg,
10988
+ veryVerboseArg,
10985
10989
  simulatorArg,
10986
10990
  simulatorArchArg]
10987
10991
  let args: [RubyCommand.Argument] = array
@@ -12536,7 +12540,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
12536
12540
  - resetRatings: Reset the summary rating when you release a new version of the application
12537
12541
  - priceTier: The price tier of this application
12538
12542
  - appRatingConfigPath: Path to the app rating's config
12539
- - submissionInformation: Extra information for the submission (e.g. compliance specifications, IDFA settings)
12543
+ - submissionInformation: Extra information for the submission (e.g. compliance specifications)
12540
12544
  - teamId: The ID of your App Store Connect team if you're in multiple teams
12541
12545
  - teamName: The name of your App Store Connect team if you're in multiple teams
12542
12546
  - devPortalTeamId: The short ID of your Developer Portal team, if you're in multiple teams. Different from your iTC team ID!
@@ -13594,7 +13598,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
13594
13598
  coverallsServiceJobId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13595
13599
  coverallsRepoToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13596
13600
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13597
- ideFoundationPath: String = "/Applications/Xcode-15.3.0.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13601
+ ideFoundationPath: String = "/Applications/Xcode_15.0.1.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13598
13602
  legacySupport: OptionalConfigValue<Bool> = .fastlaneDefault(false))
13599
13603
  {
13600
13604
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
@@ -13797,4 +13801,4 @@ public let snapshotfile: Snapshotfile = .init()
13797
13801
 
13798
13802
  // Please don't remove the lines below
13799
13803
  // They are used to detect outdated files
13800
- // FastlaneRunnerAPIVersion [0.9.177]
13804
+ // FastlaneRunnerAPIVersion [0.9.179]