fastlane 2.220.0 → 2.221.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 (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]