fastlane 2.237.0 → 2.239.0

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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +107 -100
  3. data/bin/fastlane +2 -2
  4. data/deliver/lib/deliver/html_generator.rb +1 -1
  5. data/deliver/lib/deliver/options.rb +9 -1
  6. data/deliver/lib/deliver/upload_metadata.rb +22 -0
  7. data/deliver/lib/deliver/upload_screenshots.rb +12 -4
  8. data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +7 -2
  9. data/fastlane/lib/fastlane/actions/deploygate.rb +3 -2
  10. data/fastlane/lib/fastlane/actions/docs/get_push_certificate.md +6 -0
  11. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +4 -2
  12. data/fastlane/lib/fastlane/actions/hockey.rb +3 -2
  13. data/fastlane/lib/fastlane/actions/installr.rb +3 -2
  14. data/fastlane/lib/fastlane/actions/mailgun.rb +1 -0
  15. data/fastlane/lib/fastlane/actions/notarize.rb +3 -18
  16. data/fastlane/lib/fastlane/actions/register_devices.rb +21 -5
  17. data/fastlane/lib/fastlane/actions/setup_ci.rb +7 -2
  18. data/fastlane/lib/fastlane/actions/spm.rb +6 -0
  19. data/fastlane/lib/fastlane/actions/testfairy.rb +5 -3
  20. data/fastlane/lib/fastlane/actions/tryouts.rb +3 -2
  21. data/fastlane/lib/fastlane/actions/update_project_team.rb +17 -9
  22. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +33 -7
  23. data/fastlane/lib/fastlane/helper/git_helper.rb +4 -2
  24. data/fastlane/lib/fastlane/helper/sh_helper.rb +9 -1
  25. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
  26. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
  27. data/fastlane/lib/fastlane/version.rb +1 -1
  28. data/fastlane/swift/Deliverfile.swift +1 -1
  29. data/fastlane/swift/DeliverfileProtocol.swift +9 -2
  30. data/fastlane/swift/Fastlane.swift +66 -20
  31. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +1 -1
  32. data/fastlane/swift/Gymfile.swift +1 -1
  33. data/fastlane/swift/GymfileProtocol.swift +1 -1
  34. data/fastlane/swift/Matchfile.swift +1 -1
  35. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  36. data/fastlane/swift/Precheckfile.swift +1 -1
  37. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  38. data/fastlane/swift/Scanfile.swift +1 -1
  39. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  40. data/fastlane/swift/Screengrabfile.swift +1 -1
  41. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  42. data/fastlane/swift/Snapshotfile.swift +1 -1
  43. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  44. data/fastlane_core/lib/fastlane_core/analytics/analytics_event_builder.rb +31 -5
  45. data/fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb +24 -12
  46. data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +22 -12
  47. data/fastlane_core/lib/fastlane_core/cert_checker.rb +22 -9
  48. data/fastlane_core/lib/fastlane_core/helper.rb +4 -3
  49. data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +6 -2
  50. data/fastlane_core/lib/fastlane_core/pkg_upload_package_builder.rb +1 -1
  51. data/fastlane_core/lib/fastlane_core/print_table.rb +0 -16
  52. data/fastlane_core/lib/fastlane_core/queue_worker.rb +10 -1
  53. data/fastlane_core/lib/fastlane_core/video_utils.rb +4 -2
  54. data/gym/lib/gym/module.rb +20 -2
  55. data/match/lib/match/nuke.rb +2 -2
  56. data/match/lib/match/storage/git_storage.rb +1 -4
  57. data/match/lib/match/storage/google_cloud_storage.rb +6 -1
  58. data/pem/lib/pem/manager.rb +5 -1
  59. data/pem/lib/pem/options.rb +6 -0
  60. data/pilot/lib/pilot/build_manager.rb +34 -2
  61. data/pilot/lib/pilot/options.rb +10 -2
  62. data/pilot/lib/pilot/tester_manager.rb +2 -2
  63. data/precheck/lib/precheck/rules/copyright_date_rule.rb +1 -1
  64. data/precheck/lib/precheck/rules/unreachable_urls_rule.rb +2 -2
  65. data/sigh/lib/assets/resign.sh +21 -9
  66. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +4 -1
  67. data/spaceship/lib/spaceship/client.rb +0 -1
  68. data/spaceship/lib/spaceship/connect_api/file_uploader.rb +1 -1
  69. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +6 -0
  70. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +16 -0
  71. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +5 -0
  72. data/spaceship/lib/spaceship/connect_api/models/routing_app_coverage.rb +75 -0
  73. data/spaceship/lib/spaceship/connect_api/token.rb +6 -1
  74. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +45 -0
  75. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  76. data/spaceship/lib/spaceship/helper/plist_middleware.rb +37 -8
  77. data/supply/lib/supply/client.rb +6 -0
  78. data/supply/lib/supply/reader.rb +15 -0
  79. metadata +79 -53
@@ -665,9 +665,18 @@ function resign {
665
665
  # Get the old and the new team ID
666
666
  # Old team ID is not part of app entitlements, have to get it from old embedded provisioning profile
667
667
  security cms -D -i "$TEMP_DIR/old-embedded.mobileprovision" > "$TEMP_DIR/old-embedded-profile.plist"
668
- OLD_TEAM_ID=$(PlistBuddy -c "Print :TeamIdentifier:0" "$TEMP_DIR/old-embedded-profile.plist")
668
+ OLD_TEAM_ID=$(PlistBuddy -c "Print :TeamIdentifier:0" "$TEMP_DIR/old-embedded-profile.plist" 2>/dev/null)
669
+ if [ "$OLD_TEAM_ID" == "" ]; then
670
+ OLD_TEAM_ID="$OLD_APP_ID"
671
+ fi
669
672
  # New team ID is part of profile entitlements
670
- NEW_TEAM_ID=$(PlistBuddy -c "Print com.apple.developer.team-identifier" "$PROFILE_ENTITLEMENTS" | grep -E '^[A-Z0-9]*' -o | tr -d '\n')
673
+ NEW_TEAM_ID=$(PlistBuddy -c "Print :com.apple.developer.team-identifier" "$PROFILE_ENTITLEMENTS" 2>/dev/null | grep -E '^[A-Z0-9]*' -o | tr -d '\n')
674
+ if [ "$NEW_TEAM_ID" == "" ]; then
675
+ NEW_TEAM_ID="$TEAM_IDENTIFIER"
676
+ fi
677
+ if [ "$NEW_TEAM_ID" == "" ]; then
678
+ NEW_TEAM_ID="$NEW_APP_ID"
679
+ fi
671
680
 
672
681
  log "Patching profile entitlements with values from app entitlements"
673
682
  PATCHED_ENTITLEMENTS="$TEMP_DIR/patchedEntitlements"
@@ -866,13 +875,16 @@ function resign {
866
875
  OLD_BUNDLE_ID="$(PlistBuddy -c "Print :CFBundleIdentifier" "$TEMP_DIR/oldInfo.plist")"
867
876
  NEW_BUNDLE_ID="$(bundle_id_for_provision "$NEW_PROVISION")"
868
877
  log "Replacing old bundle ID '$OLD_BUNDLE_ID' with new bundle ID '$NEW_BUNDLE_ID' in patched entitlements"
869
- # Note: ideally we'd match against the opening <string> tag too, but this isn't possible
870
- # because $OLD_BUNDLE_ID and $NEW_BUNDLE_ID do not include the team ID prefix which is
871
- # present in the entitlements file.
872
- # e.g. <string>AB1GP98Q19.com.example.foo</string>
873
- # vs
874
- # com.example.foo
875
- /usr/bin/sed -i .bak "s!${OLD_BUNDLE_ID}</string>!${NEW_BUNDLE_ID}</string>!g" "$PATCHED_ENTITLEMENTS"
878
+ # Anchor the replacement to OLD_TEAM_ID prefix, app group prefix, or the opening <string> tag
879
+ # so that if NEW_BUNDLE_ID contains OLD_BUNDLE_ID as a suffix (e.g. enterprise.com.example.foo),
880
+ # the already-correct values (like <TEAM_ID>.enterprise.com.example.foo) do not have their
881
+ # suffix duplicated.
882
+ ESCAPED_OLD_BUNDLE_ID="${OLD_BUNDLE_ID//./\\.}"
883
+ if [ -n "$OLD_TEAM_ID" ] && [ -n "$NEW_TEAM_ID" ]; then
884
+ /usr/bin/sed -i .bak "s!<string>${OLD_TEAM_ID}\.${ESCAPED_OLD_BUNDLE_ID}</string>!<string>${NEW_TEAM_ID}.${NEW_BUNDLE_ID}</string>!g" "$PATCHED_ENTITLEMENTS"
885
+ fi
886
+ /usr/bin/sed -i .bak "s!<string>group\.${ESCAPED_OLD_BUNDLE_ID}</string>!<string>group.${NEW_BUNDLE_ID}</string>!g" "$PATCHED_ENTITLEMENTS"
887
+ /usr/bin/sed -i .bak "s!<string>${ESCAPED_OLD_BUNDLE_ID}</string>!<string>${NEW_BUNDLE_ID}</string>!g" "$PATCHED_ENTITLEMENTS"
876
888
 
877
889
  log "Resigning application using certificate: '$CERTIFICATE'"
878
890
  log "and patched entitlements:"
@@ -81,7 +81,10 @@ module Snapshot
81
81
 
82
82
  unless launcher_config.headless
83
83
  simulator_path = File.join(Helper.xcode_path, 'Applications', 'Simulator.app')
84
- Helper.backticks("open -a #{simulator_path} -g", print: FastlaneCore::Globals.verbose?)
84
+ device_udid = TestCommandGenerator.device_udid(device_types.first)
85
+ command = "open -a #{simulator_path} -g"
86
+ command += " --args -CurrentDeviceUDID #{device_udid}" if device_udid
87
+ Helper.backticks(command, print: FastlaneCore::Globals.verbose?)
85
88
  end
86
89
  end
87
90
 
@@ -1,7 +1,6 @@
1
1
  require 'babosa'
2
2
  require 'faraday' # HTTP Client
3
3
  require 'faraday-cookie_jar'
4
- require 'faraday_middleware'
5
4
  require 'logger'
6
5
  require 'tmpdir'
7
6
  require 'cgi'
@@ -1,8 +1,8 @@
1
1
  require 'faraday' # HTTP Client
2
2
  require 'faraday-cookie_jar'
3
- require 'faraday_middleware'
4
3
 
5
4
  require 'spaceship/globals'
5
+ require_relative '../helper/plist_middleware'
6
6
 
7
7
  require 'openssl'
8
8
 
@@ -27,6 +27,8 @@ module Spaceship
27
27
  attr_accessor :loot_box
28
28
  attr_accessor :messaging_and_chat
29
29
  attr_accessor :parental_controls
30
+ attr_accessor :social_media
31
+ attr_accessor :social_media_age_restricted
30
32
  attr_accessor :unrestricted_web_access
31
33
  attr_accessor :user_generated_content
32
34
 
@@ -96,6 +98,8 @@ module Spaceship
96
98
  "profanityOrCrudeHumor" => "profanity_or_crude_humor",
97
99
  "sexualContentGraphicAndNudity" => "sexual_content_graphic_and_nudity",
98
100
  "sexualContentOrNudity" => "sexual_content_or_nudity",
101
+ "socialMedia" => "social_media",
102
+ "socialMediaAgeRestricted" => "social_media_age_restricted",
99
103
  "unrestrictedWebAccess" => "unrestricted_web_access",
100
104
  "userGeneratedContent" => "user_generated_content",
101
105
  "violenceCartoonOrFantasy" => "violence_cartoon_or_fantasy",
@@ -174,6 +178,8 @@ module Spaceship
174
178
  "lootBox",
175
179
  "messagingAndChat",
176
180
  "parentalControls",
181
+ "socialMedia",
182
+ "socialMediaAgeRestricted",
177
183
  "unrestrictedWebAccess",
178
184
  "userGeneratedContent"
179
185
  ]
@@ -1,6 +1,7 @@
1
1
  require_relative '../model'
2
2
  require_relative './app_store_review_detail'
3
3
  require_relative './app_store_version_localization'
4
+ require_relative './routing_app_coverage'
4
5
 
5
6
  module Spaceship
6
7
  class ConnectAPI
@@ -243,6 +244,21 @@ module Spaceship
243
244
  return resp.to_models.first
244
245
  end
245
246
 
247
+ #
248
+ # Routing App Coverages
249
+ #
250
+
251
+ def fetch_routing_app_coverage(client: nil)
252
+ client ||= Spaceship::ConnectAPI
253
+ resp = client.get_routing_app_coverage(app_store_version_id: id)
254
+ return resp.to_models.first
255
+ end
256
+
257
+ def upload_routing_app_coverage(client: nil, path: nil)
258
+ client ||= Spaceship::ConnectAPI
259
+ return Spaceship::ConnectAPI::RoutingAppCoverage.create(client: client, app_store_version_id: id, path: path)
260
+ end
261
+
246
262
  #
247
263
  # Reset Ratings Requests
248
264
  #
@@ -32,6 +32,11 @@ module Spaceship
32
32
  return "betaGroups"
33
33
  end
34
34
 
35
+ # Whether this group is referenced by any of the given identifiers (its name or id)
36
+ def matches_identifiers?(identifiers)
37
+ identifiers.include?(name) || identifiers.include?(id)
38
+ end
39
+
35
40
  #
36
41
  # API
37
42
  #
@@ -0,0 +1,75 @@
1
+ require_relative '../model'
2
+ require_relative '../file_uploader'
3
+ require 'digest/md5'
4
+
5
+ module Spaceship
6
+ class ConnectAPI
7
+ class RoutingAppCoverage
8
+ include Spaceship::ConnectAPI::Model
9
+
10
+ attr_accessor :file_size
11
+ attr_accessor :file_name
12
+ attr_accessor :source_file_checksum
13
+ attr_accessor :upload_operations
14
+ attr_accessor :asset_delivery_state
15
+ attr_accessor :uploaded
16
+
17
+ attr_mapping({
18
+ "fileSize" => "file_size",
19
+ "fileName" => "file_name",
20
+ "sourceFileChecksum" => "source_file_checksum",
21
+ "uploadOperations" => "upload_operations",
22
+ "assetDeliveryState" => "asset_delivery_state",
23
+ "uploaded" => "uploaded"
24
+ })
25
+
26
+ def self.type
27
+ return "routingAppCoverages"
28
+ end
29
+
30
+ #
31
+ # API
32
+ #
33
+
34
+ def self.create(client: nil, app_store_version_id: nil, path: nil)
35
+ client ||= Spaceship::ConnectAPI
36
+ require 'faraday'
37
+
38
+ filename = File.basename(path)
39
+ filesize = File.size(path)
40
+ bytes = File.binread(path)
41
+
42
+ post_attributes = {
43
+ fileSize: filesize,
44
+ fileName: filename
45
+ }
46
+
47
+ # Create placeholder
48
+ routing_app_coverage = client.post_routing_app_coverage(
49
+ app_store_version_id: app_store_version_id,
50
+ attributes: post_attributes
51
+ ).to_models.first
52
+
53
+ # Upload the file
54
+ upload_operations = routing_app_coverage.upload_operations
55
+ Spaceship::ConnectAPI::FileUploader.upload(upload_operations, bytes)
56
+
57
+ # Update file uploading complete
58
+ patch_attributes = {
59
+ uploaded: true,
60
+ sourceFileChecksum: Digest::MD5.hexdigest(bytes)
61
+ }
62
+
63
+ client.patch_routing_app_coverage(
64
+ routing_app_coverage_id: routing_app_coverage.id,
65
+ attributes: patch_attributes
66
+ ).to_models.first
67
+ end
68
+
69
+ def delete!(client: nil)
70
+ client ||= Spaceship::ConnectAPI
71
+ client.delete_routing_app_coverage(routing_app_coverage_id: id)
72
+ end
73
+ end
74
+ end
75
+ end
@@ -36,7 +36,12 @@ module Spaceship
36
36
  end
37
37
 
38
38
  def self.from_json_file(filepath)
39
- json = JSON.parse(File.read(filepath), { symbolize_names: true })
39
+ begin
40
+ json = JSON.parse(File.read(filepath), { symbolize_names: true })
41
+ rescue JSON::ParserError
42
+ # Don't dump secret into logs in case a secret (p8) is passed. See fastlane/fastlane#21017
43
+ raise "Invalid JSON in App Store Connect API key file '#{filepath}'. Expected a JSON file with at least the 'key_id' and 'key' fields."
44
+ end
40
45
 
41
46
  missing_keys = []
42
47
  missing_keys << 'key_id' unless json.key?(:key_id)
@@ -1018,6 +1018,51 @@ module Spaceship
1018
1018
  tunes_request_client.delete("#{Version::V1}/resetRatingsRequests/#{reset_ratings_request_id}", params)
1019
1019
  end
1020
1020
 
1021
+ #
1022
+ # routingAppCoverages
1023
+ #
1024
+
1025
+ def get_routing_app_coverage(app_store_version_id: nil)
1026
+ params = tunes_request_client.build_params(filter: nil, includes: nil, limit: nil, sort: nil)
1027
+ tunes_request_client.get("#{Version::V1}/appStoreVersions/#{app_store_version_id}/routingAppCoverage", params)
1028
+ end
1029
+
1030
+ def post_routing_app_coverage(app_store_version_id: nil, attributes: {})
1031
+ body = {
1032
+ data: {
1033
+ type: "routingAppCoverages",
1034
+ attributes: attributes,
1035
+ relationships: {
1036
+ appStoreVersion: {
1037
+ data: {
1038
+ type: "appStoreVersions",
1039
+ id: app_store_version_id
1040
+ }
1041
+ }
1042
+ }
1043
+ }
1044
+ }
1045
+
1046
+ tunes_request_client.post("#{Version::V1}/routingAppCoverages", body)
1047
+ end
1048
+
1049
+ def patch_routing_app_coverage(routing_app_coverage_id: nil, attributes: {})
1050
+ body = {
1051
+ data: {
1052
+ type: "routingAppCoverages",
1053
+ id: routing_app_coverage_id,
1054
+ attributes: attributes
1055
+ }
1056
+ }
1057
+
1058
+ tunes_request_client.patch("#{Version::V1}/routingAppCoverages/#{routing_app_coverage_id}", body)
1059
+ end
1060
+
1061
+ def delete_routing_app_coverage(routing_app_coverage_id: nil)
1062
+ params = tunes_request_client.build_params(filter: nil, includes: nil, limit: nil, sort: nil)
1063
+ tunes_request_client.delete("#{Version::V1}/routingAppCoverages/#{routing_app_coverage_id}", params)
1064
+ end
1065
+
1021
1066
  #
1022
1067
  # appStoreVersionSubmissions
1023
1068
  #
@@ -66,6 +66,7 @@ require 'spaceship/connect_api/models/app_price_tier'
66
66
  require 'spaceship/connect_api/models/app_store_review_attachment'
67
67
  require 'spaceship/connect_api/models/app_store_review_detail'
68
68
  require 'spaceship/connect_api/models/app_store_version_release_request'
69
+ require 'spaceship/connect_api/models/routing_app_coverage'
69
70
  require 'spaceship/connect_api/models/app_store_version_submission'
70
71
  require 'spaceship/connect_api/models/app_screenshot_set'
71
72
  require 'spaceship/connect_api/models/app_screenshot'
@@ -1,16 +1,45 @@
1
- require 'faraday_middleware/response_middleware'
1
+ require 'faraday'
2
2
 
3
- module FaradayMiddleware
4
- class PlistMiddleware < ResponseMiddleware
5
- dependency do
3
+ module Spaceship
4
+ class PlistMiddleware < Faraday::Middleware
5
+ def on_complete(env)
6
+ process_response(env) if parse_response?(env)
7
+ end
8
+
9
+ private
10
+
11
+ def process_response(env)
12
+ env.body = parse(env.body)
13
+ end
14
+
15
+ def parse(body)
6
16
  require 'plist' unless Object.const_defined?("Plist")
17
+ Plist.parse_xml(body.force_encoding("UTF-8"))
18
+ rescue StandardError, SyntaxError => e
19
+ raise Faraday::ParsingError.new(e, env)
20
+ end
21
+
22
+ def parse_response?(env)
23
+ env.body.kind_of?(String) && process_response_type?(env) && env.parse_body?
24
+ end
25
+
26
+ def process_response_type?(env)
27
+ type = response_type(env)
28
+ content_types.empty? || content_types.any? do |pattern|
29
+ pattern.kind_of?(Regexp) ? type.match?(pattern) : type == pattern
30
+ end
31
+ end
32
+
33
+ def response_type(env)
34
+ type = env.response_headers['Content-Type'].to_s
35
+ type = type.split(';', 2).first if type.index(';')
36
+ type
7
37
  end
8
38
 
9
- define_parser do |body|
10
- body = body.force_encoding("UTF-8")
11
- Plist.parse_xml(body)
39
+ def content_types
40
+ @content_types ||= Array(options[:content_type])
12
41
  end
13
42
  end
14
43
  end
15
44
 
16
- Faraday::Response.register_middleware(plist: FaradayMiddleware::PlistMiddleware)
45
+ Faraday::Response.register_middleware(plist: Spaceship::PlistMiddleware)
@@ -535,6 +535,12 @@ module Supply
535
535
  result&.releases || []
536
536
  end
537
537
 
538
+ def list_track_release_summaries(package_name, track)
539
+ call_google_api do
540
+ client.list_application_track_releases("applications/#{package_name}/tracks/#{track}")
541
+ end.releases || []
542
+ end
543
+
538
544
  def upload_changelogs(track, track_name)
539
545
  ensure_active_edit!
540
546
 
@@ -48,6 +48,21 @@ module Supply
48
48
  release_names
49
49
  end
50
50
 
51
+ def track_release_summaries
52
+ package_name = Supply.config[:package_name]
53
+ track = Supply.config[:track]
54
+
55
+ summaries = client.list_track_release_summaries(package_name, track)
56
+
57
+ if summaries.empty?
58
+ UI.important("No releases found in track '#{track}'")
59
+ else
60
+ UI.success("Found #{summaries.length} release(s) in track '#{track}'")
61
+ end
62
+
63
+ summaries
64
+ end
65
+
51
66
  private
52
67
 
53
68
  def client
metadata CHANGED
@@ -1,40 +1,39 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.237.0
4
+ version: 2.239.0
5
5
  platform: ruby
6
6
  authors:
7
- - Jimmy Dee
8
- - Josh Holtz
9
- - Joshua Liebowitz
10
- - Daniel Jankowski
11
- - Satoshi Namai
12
- - Luka Mirosevic
13
- - Olivier Halligon
7
+ - Łukasz Grabowski
14
8
  - Maksym Grebenets
15
- - Roger Oba
16
- - Andrew McBurney
17
- - Manish Rathi
18
- - Connor Tumbleson
19
- - Jorge Revuelta H
20
- - Felix Krause
21
9
  - Jérôme Lacoste
22
10
  - Stefan Natchev
23
- - Manu Wallner
24
- - Fumiya Nakamura
25
- - Łukasz Grabowski
26
- - Jan Piotrowski
27
- - Iulian Onofrei
11
+ - Roger Oba
28
12
  - Aaron Brager
13
+ - Luka Mirosevic
14
+ - Joshua Liebowitz
15
+ - Manu Wallner
16
+ - Olivier Halligon
17
+ - Felix Krause
18
+ - Daniel Jankowski
19
+ - Jorge Revuelta H
20
+ - Satoshi Namai
29
21
  - Kohki Miki
22
+ - Fumiya Nakamura
30
23
  - Max Ott
31
- - Matthew Ellis
32
- - Helmut Januschka
24
+ - Connor Tumbleson
33
25
  - Danielle Tomlinson
34
- autorequire:
26
+ - Iulian Onofrei
27
+ - Jimmy Dee
28
+ - Jan Piotrowski
29
+ - Manish Rathi
30
+ - Josh Holtz
31
+ - Andrew McBurney
32
+ - Helmut Januschka
33
+ - Matthew Ellis
35
34
  bindir: bin
36
35
  cert_chain: []
37
- date: 2026-07-05 00:00:00.000000000 Z
36
+ date: 1980-01-02 00:00:00.000000000 Z
38
37
  dependencies:
39
38
  - !ruby/object:Gem::Dependency
40
39
  name: addressable
@@ -233,35 +232,49 @@ dependencies:
233
232
  - !ruby/object:Gem::Version
234
233
  version: 2.0.0
235
234
  - !ruby/object:Gem::Dependency
236
- name: faraday_middleware
235
+ name: faraday
237
236
  requirement: !ruby/object:Gem::Requirement
238
237
  requirements:
239
238
  - - "~>"
240
239
  - !ruby/object:Gem::Version
241
- version: '1.0'
240
+ version: '2.7'
242
241
  type: :runtime
243
242
  prerelease: false
244
243
  version_requirements: !ruby/object:Gem::Requirement
245
244
  requirements:
246
245
  - - "~>"
247
246
  - !ruby/object:Gem::Version
248
- version: '1.0'
247
+ version: '2.7'
249
248
  - !ruby/object:Gem::Dependency
250
249
  name: faraday-cookie_jar
251
250
  requirement: !ruby/object:Gem::Requirement
252
251
  requirements:
253
252
  - - "~>"
254
253
  - !ruby/object:Gem::Version
255
- version: 0.0.6
254
+ version: 0.0.8
256
255
  type: :runtime
257
256
  prerelease: false
258
257
  version_requirements: !ruby/object:Gem::Requirement
259
258
  requirements:
260
259
  - - "~>"
261
260
  - !ruby/object:Gem::Version
262
- version: 0.0.6
261
+ version: 0.0.8
263
262
  - !ruby/object:Gem::Dependency
264
- name: faraday
263
+ name: faraday-follow_redirects
264
+ requirement: !ruby/object:Gem::Requirement
265
+ requirements:
266
+ - - "~>"
267
+ - !ruby/object:Gem::Version
268
+ version: '0.3'
269
+ type: :runtime
270
+ prerelease: false
271
+ version_requirements: !ruby/object:Gem::Requirement
272
+ requirements:
273
+ - - "~>"
274
+ - !ruby/object:Gem::Version
275
+ version: '0.3'
276
+ - !ruby/object:Gem::Dependency
277
+ name: faraday-multipart
265
278
  requirement: !ruby/object:Gem::Requirement
266
279
  requirements:
267
280
  - - "~>"
@@ -274,6 +287,20 @@ dependencies:
274
287
  - - "~>"
275
288
  - !ruby/object:Gem::Version
276
289
  version: '1.0'
290
+ - !ruby/object:Gem::Dependency
291
+ name: faraday-retry
292
+ requirement: !ruby/object:Gem::Requirement
293
+ requirements:
294
+ - - "~>"
295
+ - !ruby/object:Gem::Version
296
+ version: '2.0'
297
+ type: :runtime
298
+ prerelease: false
299
+ version_requirements: !ruby/object:Gem::Requirement
300
+ requirements:
301
+ - - "~>"
302
+ - !ruby/object:Gem::Version
303
+ version: '2.0'
277
304
  - !ruby/object:Gem::Dependency
278
305
  name: fastimage
279
306
  requirement: !ruby/object:Gem::Requirement
@@ -334,14 +361,14 @@ dependencies:
334
361
  requirements:
335
362
  - - "~>"
336
363
  - !ruby/object:Gem::Version
337
- version: '0.3'
364
+ version: 0.99.0
338
365
  type: :runtime
339
366
  prerelease: false
340
367
  version_requirements: !ruby/object:Gem::Requirement
341
368
  requirements:
342
369
  - - "~>"
343
370
  - !ruby/object:Gem::Version
344
- version: '0.3'
371
+ version: 0.99.0
345
372
  - !ruby/object:Gem::Dependency
346
373
  name: google-apis-playcustomapp_v1
347
374
  requirement: !ruby/object:Gem::Requirement
@@ -365,7 +392,7 @@ dependencies:
365
392
  version: 1.6.0
366
393
  - - "<"
367
394
  - !ruby/object:Gem::Version
368
- version: 2.3.0
395
+ version: 2.4.0
369
396
  type: :runtime
370
397
  prerelease: false
371
398
  version_requirements: !ruby/object:Gem::Requirement
@@ -375,7 +402,7 @@ dependencies:
375
402
  version: 1.6.0
376
403
  - - "<"
377
404
  - !ruby/object:Gem::Version
378
- version: 2.3.0
405
+ version: 2.4.0
379
406
  - !ruby/object:Gem::Dependency
380
407
  name: google-cloud-storage
381
408
  requirement: !ruby/object:Gem::Requirement
@@ -404,20 +431,6 @@ dependencies:
404
431
  - - "~>"
405
432
  - !ruby/object:Gem::Version
406
433
  version: '2.0'
407
- - !ruby/object:Gem::Dependency
408
- name: http-cookie
409
- requirement: !ruby/object:Gem::Requirement
410
- requirements:
411
- - - "~>"
412
- - !ruby/object:Gem::Version
413
- version: 1.0.5
414
- type: :runtime
415
- prerelease: false
416
- version_requirements: !ruby/object:Gem::Requirement
417
- requirements:
418
- - - "~>"
419
- - !ruby/object:Gem::Version
420
- version: 1.0.5
421
434
  - !ruby/object:Gem::Dependency
422
435
  name: json
423
436
  requirement: !ruby/object:Gem::Requirement
@@ -634,14 +647,14 @@ dependencies:
634
647
  requirements:
635
648
  - - "~>"
636
649
  - !ruby/object:Gem::Version
637
- version: '3'
650
+ version: '4'
638
651
  type: :runtime
639
652
  prerelease: false
640
653
  version_requirements: !ruby/object:Gem::Requirement
641
654
  requirements:
642
655
  - - "~>"
643
656
  - !ruby/object:Gem::Version
644
- version: '3'
657
+ version: '4'
645
658
  - !ruby/object:Gem::Dependency
646
659
  name: tty-screen
647
660
  requirement: !ruby/object:Gem::Requirement
@@ -820,6 +833,20 @@ dependencies:
820
833
  - - "~>"
821
834
  - !ruby/object:Gem::Version
822
835
  version: '0.2'
836
+ - !ruby/object:Gem::Dependency
837
+ name: irb
838
+ requirement: !ruby/object:Gem::Requirement
839
+ requirements:
840
+ - - ">="
841
+ - !ruby/object:Gem::Version
842
+ version: '1.8'
843
+ type: :runtime
844
+ prerelease: false
845
+ version_requirements: !ruby/object:Gem::Requirement
846
+ requirements:
847
+ - - ">="
848
+ - !ruby/object:Gem::Version
849
+ version: '1.8'
823
850
  - !ruby/object:Gem::Dependency
824
851
  name: logger
825
852
  requirement: !ruby/object:Gem::Requirement
@@ -1669,6 +1696,7 @@ files:
1669
1696
  - spaceship/lib/spaceship/connect_api/models/review_rejection.rb
1670
1697
  - spaceship/lib/spaceship/connect_api/models/review_submission.rb
1671
1698
  - spaceship/lib/spaceship/connect_api/models/review_submission_item.rb
1699
+ - spaceship/lib/spaceship/connect_api/models/routing_app_coverage.rb
1672
1700
  - spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb
1673
1701
  - spaceship/lib/spaceship/connect_api/models/territory.rb
1674
1702
  - spaceship/lib/spaceship/connect_api/models/territory_availability.rb
@@ -1829,7 +1857,6 @@ metadata:
1829
1857
  documentation_uri: https://docs.fastlane.tools/
1830
1858
  homepage_uri: https://fastlane.tools
1831
1859
  source_code_uri: https://github.com/fastlane/fastlane
1832
- post_install_message:
1833
1860
  rdoc_options: []
1834
1861
  require_paths:
1835
1862
  - cert/lib
@@ -1855,15 +1882,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
1855
1882
  requirements:
1856
1883
  - - ">="
1857
1884
  - !ruby/object:Gem::Version
1858
- version: '3.0'
1885
+ version: '3.1'
1859
1886
  required_rubygems_version: !ruby/object:Gem::Requirement
1860
1887
  requirements:
1861
1888
  - - ">="
1862
1889
  - !ruby/object:Gem::Version
1863
1890
  version: '0'
1864
1891
  requirements: []
1865
- rubygems_version: 3.4.19
1866
- signing_key:
1892
+ rubygems_version: 3.6.9
1867
1893
  specification_version: 4
1868
1894
  summary: The easiest way to build and release mobile apps.
1869
1895
  test_files: []