fastlane 2.238.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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +96 -96
  3. data/bin/fastlane +2 -2
  4. data/deliver/lib/deliver/html_generator.rb +1 -1
  5. data/deliver/lib/deliver/options.rb +8 -0
  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/docs/get_push_certificate.md +6 -0
  10. data/fastlane/lib/fastlane/helper/git_helper.rb +4 -2
  11. data/fastlane/lib/fastlane/helper/sh_helper.rb +9 -1
  12. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
  13. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
  14. data/fastlane/lib/fastlane/version.rb +1 -1
  15. data/fastlane/swift/Deliverfile.swift +1 -1
  16. data/fastlane/swift/DeliverfileProtocol.swift +8 -1
  17. data/fastlane/swift/Fastlane.swift +38 -2
  18. data/fastlane/swift/Gymfile.swift +1 -1
  19. data/fastlane/swift/GymfileProtocol.swift +1 -1
  20. data/fastlane/swift/Matchfile.swift +1 -1
  21. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  22. data/fastlane/swift/Precheckfile.swift +1 -1
  23. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  24. data/fastlane/swift/Scanfile.swift +1 -1
  25. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  26. data/fastlane/swift/Screengrabfile.swift +1 -1
  27. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  28. data/fastlane/swift/Snapshotfile.swift +1 -1
  29. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  30. data/match/lib/match/nuke.rb +2 -2
  31. data/match/lib/match/storage/git_storage.rb +1 -4
  32. data/match/lib/match/storage/google_cloud_storage.rb +6 -1
  33. data/pem/lib/pem/manager.rb +5 -1
  34. data/pem/lib/pem/options.rb +6 -0
  35. data/pilot/lib/pilot/build_manager.rb +32 -0
  36. data/pilot/lib/pilot/options.rb +8 -0
  37. data/sigh/lib/assets/resign.sh +21 -9
  38. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +16 -0
  39. data/spaceship/lib/spaceship/connect_api/models/routing_app_coverage.rb +75 -0
  40. data/spaceship/lib/spaceship/connect_api/token.rb +6 -1
  41. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +45 -0
  42. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  43. data/supply/lib/supply/client.rb +6 -0
  44. data/supply/lib/supply/reader.rb +15 -0
  45. metadata +26 -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'
@@ -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.238.0
4
+ version: 2.239.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Łukasz Grabowski
8
+ - Maksym Grebenets
8
9
  - Jérôme Lacoste
9
- - Felix Krause
10
- - Joshua Liebowitz
10
+ - Stefan Natchev
11
11
  - Roger Oba
12
- - Olivier Halligon
13
- - Helmut Januschka
14
- - Connor Tumbleson
15
- - Josh Holtz
16
- - Max Ott
17
- - Satoshi Namai
18
- - Jorge Revuelta H
19
12
  - Aaron Brager
20
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
21
21
  - Kohki Miki
22
- - Stefan Natchev
23
- - Andrew McBurney
24
22
  - Fumiya Nakamura
25
- - Iulian Onofrei
23
+ - Max Ott
24
+ - Connor Tumbleson
26
25
  - Danielle Tomlinson
27
- - Manu Wallner
28
- - Daniel Jankowski
29
- - Jan Piotrowski
30
- - Matthew Ellis
26
+ - Iulian Onofrei
31
27
  - Jimmy Dee
32
- - Maksym Grebenets
28
+ - Jan Piotrowski
33
29
  - Manish Rathi
34
- autorequire:
30
+ - Josh Holtz
31
+ - Andrew McBurney
32
+ - Helmut Januschka
33
+ - Matthew Ellis
35
34
  bindir: bin
36
35
  cert_chain: []
37
- date: 2026-08-12 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
@@ -362,14 +361,14 @@ dependencies:
362
361
  requirements:
363
362
  - - "~>"
364
363
  - !ruby/object:Gem::Version
365
- version: '0.3'
364
+ version: 0.99.0
366
365
  type: :runtime
367
366
  prerelease: false
368
367
  version_requirements: !ruby/object:Gem::Requirement
369
368
  requirements:
370
369
  - - "~>"
371
370
  - !ruby/object:Gem::Version
372
- version: '0.3'
371
+ version: 0.99.0
373
372
  - !ruby/object:Gem::Dependency
374
373
  name: google-apis-playcustomapp_v1
375
374
  requirement: !ruby/object:Gem::Requirement
@@ -393,7 +392,7 @@ dependencies:
393
392
  version: 1.6.0
394
393
  - - "<"
395
394
  - !ruby/object:Gem::Version
396
- version: 2.3.0
395
+ version: 2.4.0
397
396
  type: :runtime
398
397
  prerelease: false
399
398
  version_requirements: !ruby/object:Gem::Requirement
@@ -403,7 +402,7 @@ dependencies:
403
402
  version: 1.6.0
404
403
  - - "<"
405
404
  - !ruby/object:Gem::Version
406
- version: 2.3.0
405
+ version: 2.4.0
407
406
  - !ruby/object:Gem::Dependency
408
407
  name: google-cloud-storage
409
408
  requirement: !ruby/object:Gem::Requirement
@@ -432,20 +431,6 @@ dependencies:
432
431
  - - "~>"
433
432
  - !ruby/object:Gem::Version
434
433
  version: '2.0'
435
- - !ruby/object:Gem::Dependency
436
- name: http-cookie
437
- requirement: !ruby/object:Gem::Requirement
438
- requirements:
439
- - - "~>"
440
- - !ruby/object:Gem::Version
441
- version: 1.0.5
442
- type: :runtime
443
- prerelease: false
444
- version_requirements: !ruby/object:Gem::Requirement
445
- requirements:
446
- - - "~>"
447
- - !ruby/object:Gem::Version
448
- version: 1.0.5
449
434
  - !ruby/object:Gem::Dependency
450
435
  name: json
451
436
  requirement: !ruby/object:Gem::Requirement
@@ -1711,6 +1696,7 @@ files:
1711
1696
  - spaceship/lib/spaceship/connect_api/models/review_rejection.rb
1712
1697
  - spaceship/lib/spaceship/connect_api/models/review_submission.rb
1713
1698
  - spaceship/lib/spaceship/connect_api/models/review_submission_item.rb
1699
+ - spaceship/lib/spaceship/connect_api/models/routing_app_coverage.rb
1714
1700
  - spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb
1715
1701
  - spaceship/lib/spaceship/connect_api/models/territory.rb
1716
1702
  - spaceship/lib/spaceship/connect_api/models/territory_availability.rb
@@ -1871,7 +1857,6 @@ metadata:
1871
1857
  documentation_uri: https://docs.fastlane.tools/
1872
1858
  homepage_uri: https://fastlane.tools
1873
1859
  source_code_uri: https://github.com/fastlane/fastlane
1874
- post_install_message:
1875
1860
  rdoc_options: []
1876
1861
  require_paths:
1877
1862
  - cert/lib
@@ -1897,15 +1882,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
1897
1882
  requirements:
1898
1883
  - - ">="
1899
1884
  - !ruby/object:Gem::Version
1900
- version: '3.0'
1885
+ version: '3.1'
1901
1886
  required_rubygems_version: !ruby/object:Gem::Requirement
1902
1887
  requirements:
1903
1888
  - - ">="
1904
1889
  - !ruby/object:Gem::Version
1905
1890
  version: '0'
1906
1891
  requirements: []
1907
- rubygems_version: 3.4.19
1908
- signing_key:
1892
+ rubygems_version: 3.6.9
1909
1893
  specification_version: 4
1910
1894
  summary: The easiest way to build and release mobile apps.
1911
1895
  test_files: []