fastlane 2.165.0 → 2.170.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +76 -76
  3. data/cert/lib/cert/options.rb +3 -3
  4. data/cert/lib/cert/runner.rb +1 -1
  5. data/deliver/lib/deliver/app_screenshot.rb +6 -2
  6. data/deliver/lib/deliver/loader.rb +136 -18
  7. data/deliver/lib/deliver/upload_metadata.rb +4 -10
  8. data/deliver/lib/deliver/upload_screenshots.rb +1 -64
  9. data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
  10. data/fastlane/lib/fastlane/actions/add_git_tag.rb +9 -2
  11. data/fastlane/lib/fastlane/actions/appledoc.rb +1 -1
  12. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +4 -0
  13. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
  14. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +1 -1
  15. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +4 -0
  16. data/fastlane/lib/fastlane/actions/onesignal.rb +13 -3
  17. data/fastlane/lib/fastlane/actions/slather.rb +2 -2
  18. data/fastlane/lib/fastlane/actions/spm.rb +6 -0
  19. data/fastlane/lib/fastlane/actions/update_fastlane.rb +29 -8
  20. data/fastlane/lib/fastlane/actions/upload_app_privacy_details_to_app_store.rb +289 -0
  21. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +3 -3
  22. data/fastlane/lib/fastlane/actions/xcode_install.rb +8 -5
  23. data/fastlane/lib/fastlane/cli_tools_distributor.rb +2 -2
  24. data/fastlane/lib/fastlane/features.rb +1 -1
  25. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +2 -1
  26. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +3 -0
  27. data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
  28. data/fastlane/lib/fastlane/version.rb +1 -1
  29. data/fastlane/swift/Deliverfile.swift +1 -1
  30. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  31. data/fastlane/swift/Fastfile.swift +1 -1
  32. data/fastlane/swift/Fastlane.swift +97 -26
  33. data/fastlane/swift/Gymfile.swift +1 -1
  34. data/fastlane/swift/GymfileProtocol.swift +5 -1
  35. data/fastlane/swift/LaneFileProtocol.swift +2 -2
  36. data/fastlane/swift/MainProcess.swift +2 -0
  37. data/fastlane/swift/Matchfile.swift +1 -1
  38. data/fastlane/swift/MatchfileProtocol.swift +3 -3
  39. data/fastlane/swift/Precheckfile.swift +1 -1
  40. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  41. data/fastlane/swift/Runner.swift +1 -1
  42. data/fastlane/swift/Scanfile.swift +1 -1
  43. data/fastlane/swift/ScanfileProtocol.swift +9 -1
  44. data/fastlane/swift/Screengrabfile.swift +1 -1
  45. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  46. data/fastlane/swift/Snapshotfile.swift +1 -1
  47. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  48. data/fastlane/swift/SocketClient.swift +1 -1
  49. data/fastlane_core/lib/fastlane_core/cert_checker.rb +12 -7
  50. data/fastlane_core/lib/fastlane_core/helper.rb +10 -2
  51. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +3 -3
  52. data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +3 -1
  53. data/fastlane_core/lib/fastlane_core/ui/disable_colors.rb +8 -0
  54. data/gym/lib/gym/code_signing_mapping.rb +1 -1
  55. data/gym/lib/gym/generators/build_command_generator.rb +1 -0
  56. data/gym/lib/gym/options.rb +7 -1
  57. data/match/lib/match/module.rb +1 -1
  58. data/match/lib/match/nuke.rb +9 -5
  59. data/match/lib/match/options.rb +1 -1
  60. data/match/lib/match/runner.rb +1 -1
  61. data/pilot/lib/pilot/build_manager.rb +9 -3
  62. data/scan/lib/scan/detect_values.rb +3 -1
  63. data/scan/lib/scan/module.rb +4 -0
  64. data/scan/lib/scan/options.rb +16 -1
  65. data/scan/lib/scan/runner.rb +2 -2
  66. data/scan/lib/scan/test_command_generator.rb +1 -0
  67. data/snapshot/lib/assets/SnapshotHelper.swift +5 -1
  68. data/snapshot/lib/snapshot/test_command_generator.rb +1 -1
  69. data/snapshot/lib/snapshot/test_command_generator_base.rb +3 -1
  70. data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +1 -1
  71. data/spaceship/lib/spaceship/client.rb +14 -0
  72. data/spaceship/lib/spaceship/connect_api.rb +6 -0
  73. data/spaceship/lib/spaceship/connect_api/models/.app_data_usage_data_protection.rb.swp +0 -0
  74. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +3 -2
  75. data/spaceship/lib/spaceship/connect_api/models/app.rb +88 -54
  76. data/spaceship/lib/spaceship/connect_api/models/app_data_usage.rb +59 -0
  77. data/spaceship/lib/spaceship/connect_api/models/app_data_usage_category.rb +65 -0
  78. data/spaceship/lib/spaceship/connect_api/models/app_data_usage_data_protection.rb +27 -0
  79. data/spaceship/lib/spaceship/connect_api/models/app_data_usage_grouping.rb +18 -0
  80. data/spaceship/lib/spaceship/connect_api/models/app_data_usage_purposes.rb +37 -0
  81. data/spaceship/lib/spaceship/connect_api/models/app_data_usages_publish_state.rb +36 -0
  82. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +16 -10
  83. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +8 -4
  84. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +15 -11
  85. data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +13 -9
  86. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +9 -7
  87. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +15 -11
  88. data/spaceship/lib/spaceship/connect_api/models/app_store_review_attachment.rb +7 -5
  89. data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +6 -4
  90. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +55 -36
  91. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +21 -14
  92. data/spaceship/lib/spaceship/connect_api/models/app_store_version_submission.rb +3 -2
  93. data/spaceship/lib/spaceship/connect_api/models/beta_app_review_submission.rb +3 -2
  94. data/spaceship/lib/spaceship/connect_api/models/beta_feedback.rb +6 -4
  95. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +12 -2
  96. data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +12 -8
  97. data/spaceship/lib/spaceship/connect_api/models/build.rb +24 -16
  98. data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +3 -2
  99. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +9 -6
  100. data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +6 -4
  101. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +12 -8
  102. data/spaceship/lib/spaceship/connect_api/models/device.rb +10 -4
  103. data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +6 -4
  104. data/spaceship/lib/spaceship/connect_api/models/profile.rb +12 -8
  105. data/spaceship/lib/spaceship/connect_api/models/reset_ratings_request.rb +3 -2
  106. data/spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb +9 -6
  107. data/spaceship/lib/spaceship/connect_api/models/territory.rb +3 -2
  108. data/spaceship/lib/spaceship/connect_api/models/user.rb +6 -4
  109. data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +9 -6
  110. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +12 -0
  111. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +103 -0
  112. data/spaceship/lib/spaceship/errors.rb +19 -0
  113. data/spaceship/lib/spaceship/tunes/iap_detail.rb +1 -1
  114. data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
  115. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +18 -6
  116. data/supply/lib/supply.rb +1 -1
  117. data/supply/lib/supply/options.rb +1 -1
  118. data/supply/lib/supply/uploader.rb +3 -2
  119. metadata +26 -18
@@ -214,6 +214,18 @@ module Spaceship
214
214
  test_flight_request_client.post("betaGroups", body)
215
215
  end
216
216
 
217
+ def delete_beta_group(group_id: nil)
218
+ raise "group_id is nil" if group_id.nil?
219
+
220
+ test_flight_request_client.delete("betaGroups/#{group_id}")
221
+ end
222
+
223
+ def get_builds_for_beta_group(group_id: nil)
224
+ raise "group_id is nil" if group_id.nil?
225
+
226
+ test_flight_request_client.get("betaGroups/#{group_id}/builds")
227
+ end
228
+
217
229
  #
218
230
  # betaTesters
219
231
  #
@@ -200,6 +200,109 @@ module Spaceship
200
200
  tunes_request_client.patch("apps/#{app_id}", body)
201
201
  end
202
202
 
203
+ #
204
+ # appDataUsage
205
+ #
206
+
207
+ def get_app_data_usages(app_id: nil, filter: {}, includes: nil, limit: nil, sort: nil)
208
+ params = tunes_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
209
+ tunes_request_client.get("apps/#{app_id}/dataUsages", params)
210
+ end
211
+
212
+ def post_app_data_usage(app_id:, app_data_usage_category_id: nil, app_data_usage_protection_id: nil, app_data_usage_purpose_id: nil)
213
+ raise "app_id is required " if app_id.nil?
214
+
215
+ relationships = {
216
+ app: {
217
+ data: {
218
+ type: "apps",
219
+ id: app_id
220
+ }
221
+ }
222
+ }
223
+
224
+ if app_data_usage_category_id
225
+ relationships[:category] = {
226
+ data: {
227
+ type: "appDataUsageCategories",
228
+ id: app_data_usage_category_id
229
+ }
230
+ }
231
+ end
232
+
233
+ if app_data_usage_protection_id
234
+ relationships[:dataProtection] = {
235
+ data: {
236
+ type: "appDataUsageDataProtections",
237
+ id: app_data_usage_protection_id
238
+ }
239
+ }
240
+ end
241
+
242
+ if app_data_usage_purpose_id
243
+ relationships[:purpose] = {
244
+ data: {
245
+ type: "appDataUsagePurposes",
246
+ id: app_data_usage_purpose_id
247
+ }
248
+ }
249
+ end
250
+
251
+ body = {
252
+ data: {
253
+ type: "appDataUsages",
254
+ relationships: relationships
255
+ }
256
+ }
257
+
258
+ tunes_request_client.post("appDataUsages", body)
259
+ end
260
+
261
+ def delete_app_data_usage(app_data_usage_id: nil)
262
+ tunes_request_client.delete("appDataUsages/#{app_data_usage_id}")
263
+ end
264
+
265
+ #
266
+ # appDataUsageCategory
267
+ #
268
+
269
+ def get_app_data_usage_categories(filter: {}, includes: nil, limit: nil, sort: nil)
270
+ params = tunes_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
271
+ tunes_request_client.get("appDataUsageCategories", params)
272
+ end
273
+
274
+ #
275
+ # appDataUsagePurpose
276
+ #
277
+
278
+ def get_app_data_usage_purposes(filter: {}, includes: nil, limit: nil, sort: nil)
279
+ params = tunes_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
280
+ tunes_request_client.get("appDataUsagePurposes", params)
281
+ end
282
+
283
+ #
284
+ # appDataUsagesPublishState
285
+ #
286
+
287
+ def get_app_data_usages_publish_state(app_id: nil)
288
+ params = tunes_request_client.build_params(filter: nil, includes: nil, limit: nil, sort: nil)
289
+ tunes_request_client.get("apps/#{app_id}/dataUsagePublishState", params)
290
+ end
291
+
292
+ def patch_app_data_usages_publish_state(app_data_usages_publish_state_id: nil, published: nil)
293
+ body = {
294
+ data: {
295
+ type: "appDataUsagesPublishState",
296
+ id: app_data_usages_publish_state_id,
297
+ attributes: {
298
+ published: published
299
+ }
300
+ }
301
+ }
302
+
303
+ tunes_request_client.patch("appDataUsagesPublishState/#{app_data_usages_publish_state_id}", body)
304
+ end
305
+
203
306
  #
204
307
  # appPreview
205
308
  #
@@ -43,6 +43,25 @@ module Spaceship
43
43
  end
44
44
  end
45
45
 
46
+ # Raised when 429 is received from App Store Connect
47
+ class TooManyRequestsError < BasicPreferredInfoError
48
+ attr_reader :retry_after
49
+ attr_reader :rate_limit_user
50
+
51
+ def initialize(resp_hash)
52
+ headers = resp_hash[:response_headers] || {}
53
+ @retry_after = (headers['retry-after'] || 60).to_i
54
+ @rate_limit_user = headers['x-daiquiri-rate-limit-user']
55
+ message = 'Apple 429 detected'
56
+ message += " - #{rate_limit_user}" if rate_limit_user
57
+ super(message)
58
+ end
59
+
60
+ def show_github_issues
61
+ false
62
+ end
63
+ end
64
+
46
65
  class UnexpectedResponse < StandardError
47
66
  attr_reader :error_info
48
67
 
@@ -242,7 +242,7 @@ module Spaceship
242
242
  # @return ([Spaceship::Tunes::PricingInfo]) An array of pricing infos from the same tier
243
243
  def world_wide_pricing_info
244
244
  client
245
- .pricing_tiers
245
+ .pricing_tiers(application.apple_id)
246
246
  .find { |p| p.tier_stem == pricing_intervals.first[:tier].to_s }
247
247
  .pricing_info
248
248
  end
@@ -704,9 +704,9 @@ module Spaceship
704
704
  # ...
705
705
  # }, {
706
706
  # ...
707
- def pricing_tiers
707
+ def pricing_tiers(app_id)
708
708
  @pricing_tiers ||= begin
709
- r = request(:get, 'ra/apps/pricing/matrix')
709
+ r = request(:get, "ra/apps/#{app_id}/iaps/pricing/matrix")
710
710
  data = parse_response(r, 'data')['pricingTiers']
711
711
  data.map { |tier| Spaceship::Tunes::PricingTier.factory(tier) }
712
712
  end
@@ -134,18 +134,20 @@ module Spaceship
134
134
 
135
135
  phone_number = env_2fa_sms_default_phone_number
136
136
  phone_id = phone_id_from_number(response.body["trustedPhoneNumbers"], phone_number)
137
+ push_mode = push_mode_from_masked_number(response.body["trustedPhoneNumbers"], phone_number)
137
138
  # don't request sms if no trusted devices and env default is the only trusted number,
138
139
  # code was automatically sent
139
140
  should_request_code = !sms_automatically_sent(response)
140
141
  code_type = 'phone'
141
- body = request_two_factor_code_from_phone(phone_id, phone_number, code_length, should_request_code)
142
+ body = request_two_factor_code_from_phone(phone_id, phone_number, code_length, push_mode, should_request_code)
142
143
  elsif sms_automatically_sent(response) # sms fallback, code was automatically sent
143
144
  fallback_number = response.body["trustedPhoneNumbers"].first
144
145
  phone_number = fallback_number["numberWithDialCode"]
145
146
  phone_id = fallback_number["id"]
147
+ push_mode = fallback_number['pushMode']
146
148
 
147
149
  code_type = 'phone'
148
- body = request_two_factor_code_from_phone(phone_id, phone_number, code_length, false)
150
+ body = request_two_factor_code_from_phone(phone_id, phone_number, code_length, push_mode, false)
149
151
  elsif sms_fallback(response) # sms fallback but code wasn't sent bec > 1 phone number
150
152
  code_type = 'phone'
151
153
  body = request_two_factor_code_from_phone_choose(response.body["trustedPhoneNumbers"], code_length)
@@ -275,6 +277,15 @@ If it is, please open an issue at https://github.com/fastlane/fastlane/issues/ne
275
277
  end
276
278
  end
277
279
 
280
+ def push_mode_from_masked_number(phone_numbers, masked_number)
281
+ phone_numbers.each do |phone|
282
+ return phone['pushMode'] if phone['numberWithDialCode'] == masked_number
283
+ end
284
+
285
+ # If no pushMode was supplied, assume sms
286
+ return "sms"
287
+ end
288
+
278
289
  def request_two_factor_code_from_phone_choose(phone_numbers, code_length)
279
290
  puts("Please select a trusted phone number to send code to:")
280
291
 
@@ -283,18 +294,19 @@ If it is, please open an issue at https://github.com/fastlane/fastlane/issues/ne
283
294
  end
284
295
  chosen = choose_phone_number(available)
285
296
  phone_id = phone_id_from_masked_number(phone_numbers, chosen)
297
+ push_mode = push_mode_from_masked_number(phone_numbers, chosen)
286
298
 
287
- request_two_factor_code_from_phone(phone_id, chosen, code_length)
299
+ request_two_factor_code_from_phone(phone_id, chosen, code_length, push_mode)
288
300
  end
289
301
 
290
302
  # this is used in two places: after choosing a phone number and when a phone number is set via ENV var
291
- def request_two_factor_code_from_phone(phone_id, phone_number, code_length, should_request_code = true)
303
+ def request_two_factor_code_from_phone(phone_id, phone_number, code_length, push_mode = "sms", should_request_code = true)
292
304
  if should_request_code
293
305
  # Request code
294
306
  r = request(:put) do |req|
295
307
  req.url("https://idmsa.apple.com/appleauth/auth/verify/phone")
296
308
  req.headers['Content-Type'] = 'application/json'
297
- req.body = { "phoneNumber" => { "id" => phone_id }, "mode" => "sms" }.to_json
309
+ req.body = { "phoneNumber" => { "id" => phone_id }, "mode" => push_mode }.to_json
298
310
  update_request_headers(req)
299
311
  end
300
312
 
@@ -307,7 +319,7 @@ If it is, please open an issue at https://github.com/fastlane/fastlane/issues/ne
307
319
 
308
320
  code = ask_for_2fa_code("Please enter the #{code_length} digit code you received at #{phone_number}:")
309
321
 
310
- return { "securityCode" => { "code" => code.to_s }, "phoneNumber" => { "id" => phone_id }, "mode" => "sms" }.to_json
322
+ return { "securityCode" => { "code" => code.to_s }, "phoneNumber" => { "id" => phone_id }, "mode" => push_mode }.to_json
311
323
  end
312
324
 
313
325
  def store_session
@@ -16,7 +16,7 @@ module Supply
16
16
  end
17
17
 
18
18
  AVAILABLE_METADATA_FIELDS = %w(title short_description full_description video)
19
- IMAGES_TYPES = %w(featureGraphic icon promoGraphic tvBanner)
19
+ IMAGES_TYPES = %w(featureGraphic icon tvBanner) # https://developers.google.com/android-publisher/api-ref/rest/v3/AppImageType
20
20
  SCREENSHOT_TYPES = %w(phoneScreenshots sevenInchScreenshots tenInchScreenshots tvScreenshots wearScreenshots)
21
21
 
22
22
  IMAGES_FOLDER_NAME = "images"
@@ -49,7 +49,7 @@ module Supply
49
49
  end),
50
50
  FastlaneCore::ConfigItem.new(key: :rollout,
51
51
  short_option: "-r",
52
- description: "The percentage of the user fraction when uploading to the rollout track",
52
+ description: "The percentage of the user fraction when uploading to the rollout track (setting to 1 will complete the rollout)",
53
53
  optional: true,
54
54
  verify_block: proc do |value|
55
55
  min = 0.0
@@ -192,9 +192,10 @@ module Supply
192
192
  release = releases.first
193
193
  track_to = client.tracks(Supply.config[:track_promote_to]).first
194
194
 
195
- if Supply.config[:rollout]
195
+ rollout = (Supply.config[:rollout] || 0).to_f
196
+ if rollout > 0 && rollout < 1
196
197
  release.status = Supply::ReleaseStatus::IN_PROGRESS
197
- release.user_fraction = Supply.config[:rollout]
198
+ release.user_fraction = rollout
198
199
  else
199
200
  release.status = Supply::ReleaseStatus::COMPLETED
200
201
  release.user_fraction = nil
metadata CHANGED
@@ -1,35 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.165.0
4
+ version: 2.170.0
5
5
  platform: ruby
6
6
  authors:
7
+ - Jimmy Dee
8
+ - Aaron Brager
7
9
  - Jorge Revuelta H
8
- - Matthew Ellis
9
- - Felix Krause
10
10
  - Josh Holtz
11
- - Danielle Tomlinson
12
- - Jérôme Lacoste
13
- - Kohki Miki
14
- - Maksym Grebenets
15
- - Aaron Brager
16
- - Jimmy Dee
17
- - Max Ott
18
- - Luka Mirosevic
19
- - Manu Wallner
20
11
  - Jan Piotrowski
21
12
  - Stefan Natchev
22
- - Andrew McBurney
23
- - Fumiya Nakamura
24
13
  - Iulian Onofrei
25
- - Olivier Halligon
14
+ - Jérôme Lacoste
15
+ - Helmut Januschka
16
+ - Luka Mirosevic
17
+ - Matthew Ellis
18
+ - Maksym Grebenets
19
+ - Andrew McBurney
20
+ - Manu Wallner
26
21
  - Joshua Liebowitz
22
+ - Felix Krause
23
+ - Kohki Miki
24
+ - Olivier Halligon
27
25
  - Daniel Jankowski
28
- - Helmut Januschka
26
+ - Max Ott
27
+ - Danielle Tomlinson
28
+ - Fumiya Nakamura
29
29
  autorequire:
30
30
  bindir: bin
31
31
  cert_chain: []
32
- date: 2020-10-23 00:00:00.000000000 Z
32
+ date: 2020-12-04 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: slack-notifier
@@ -1207,6 +1207,7 @@ files:
1207
1207
  - fastlane/lib/fastlane/actions/update_project_team.rb
1208
1208
  - fastlane/lib/fastlane/actions/update_urban_airship_configuration.rb
1209
1209
  - fastlane/lib/fastlane/actions/update_url_schemes.rb
1210
+ - fastlane/lib/fastlane/actions/upload_app_privacy_details_to_app_store.rb
1210
1211
  - fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb
1211
1212
  - fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb
1212
1213
  - fastlane/lib/fastlane/actions/upload_to_app_store.rb
@@ -1619,10 +1620,17 @@ files:
1619
1620
  - spaceship/lib/spaceship/connect_api/client.rb
1620
1621
  - spaceship/lib/spaceship/connect_api/file_uploader.rb
1621
1622
  - spaceship/lib/spaceship/connect_api/model.rb
1623
+ - spaceship/lib/spaceship/connect_api/models/.app_data_usage_data_protection.rb.swp
1622
1624
  - spaceship/lib/spaceship/connect_api/models/.app_store_version_submission.rb.swp
1623
1625
  - spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb
1624
1626
  - spaceship/lib/spaceship/connect_api/models/app.rb
1625
1627
  - spaceship/lib/spaceship/connect_api/models/app_category.rb
1628
+ - spaceship/lib/spaceship/connect_api/models/app_data_usage.rb
1629
+ - spaceship/lib/spaceship/connect_api/models/app_data_usage_category.rb
1630
+ - spaceship/lib/spaceship/connect_api/models/app_data_usage_data_protection.rb
1631
+ - spaceship/lib/spaceship/connect_api/models/app_data_usage_grouping.rb
1632
+ - spaceship/lib/spaceship/connect_api/models/app_data_usage_purposes.rb
1633
+ - spaceship/lib/spaceship/connect_api/models/app_data_usages_publish_state.rb
1626
1634
  - spaceship/lib/spaceship/connect_api/models/app_info.rb
1627
1635
  - spaceship/lib/spaceship/connect_api/models/app_info_localization.rb
1628
1636
  - spaceship/lib/spaceship/connect_api/models/app_preview.rb
@@ -1829,7 +1837,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1829
1837
  - !ruby/object:Gem::Version
1830
1838
  version: '0'
1831
1839
  requirements: []
1832
- rubygems_version: 3.0.6
1840
+ rubygems_version: 3.1.4
1833
1841
  signing_key:
1834
1842
  specification_version: 4
1835
1843
  summary: The easiest way to automate beta deployments and releases for your iOS and