fastlane 2.214.0 → 2.215.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +84 -84
  3. data/deliver/lib/deliver/app_screenshot.rb +13 -10
  4. data/deliver/lib/deliver/submit_for_review.rb +13 -0
  5. data/fastlane/lib/fastlane/.features.rb.swp +0 -0
  6. data/fastlane/lib/fastlane/actions/docs/build_app.md +2 -2
  7. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +8 -8
  8. data/fastlane/lib/fastlane/actions/docs/check_app_store_metadata.md +3 -3
  9. data/fastlane/lib/fastlane/actions/docs/get_push_certificate.md +2 -2
  10. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +1 -1
  11. data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +1 -1
  12. data/fastlane/lib/fastlane/actions/download_universal_apk_from_google_play.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +4 -0
  14. data/fastlane/lib/fastlane/helper/xcodes_helper.rb +0 -3
  15. data/fastlane/lib/fastlane/new_action.rb +1 -1
  16. data/fastlane/lib/fastlane/plugins/plugin_info_collector.rb +3 -3
  17. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -2
  18. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
  19. data/fastlane/lib/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%/helper/%plugin_name%_helper.rb.erb +1 -1
  20. data/fastlane/lib/fastlane/version.rb +2 -2
  21. data/fastlane/swift/Deliverfile.swift +1 -1
  22. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  23. data/fastlane/swift/Fastlane.swift +22 -2
  24. data/fastlane/swift/Gymfile.swift +1 -1
  25. data/fastlane/swift/GymfileProtocol.swift +1 -1
  26. data/fastlane/swift/Matchfile.swift +1 -1
  27. data/fastlane/swift/MatchfileProtocol.swift +5 -1
  28. data/fastlane/swift/Precheckfile.swift +1 -1
  29. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  30. data/fastlane/swift/Scanfile.swift +1 -1
  31. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  32. data/fastlane/swift/Screengrabfile.swift +1 -1
  33. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  34. data/fastlane/swift/Snapshotfile.swift +1 -1
  35. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  36. data/fastlane/swift/formatting/Brewfile.lock.json +26 -16
  37. data/fastlane_core/lib/fastlane_core/.env.rb.swp +0 -0
  38. data/fastlane_core/lib/fastlane_core/cert_checker.rb +1 -1
  39. data/frameit/lib/frameit/device_types.rb +1 -1
  40. data/match/lib/match/change_password.rb +3 -9
  41. data/match/lib/match/commands_generator.rb +3 -6
  42. data/match/lib/match/encryption.rb +1 -1
  43. data/match/lib/match/importer.rb +3 -31
  44. data/match/lib/match/migrate.rb +6 -2
  45. data/match/lib/match/nuke.rb +3 -25
  46. data/match/lib/match/options.rb +7 -0
  47. data/match/lib/match/runner.rb +5 -32
  48. data/match/lib/match/setup.rb +1 -1
  49. data/match/lib/match/storage/s3_storage.rb +6 -0
  50. data/match/lib/match/storage.rb +56 -5
  51. data/spaceship/lib/spaceship/connect_api/api_client.rb +19 -1
  52. data/spaceship/lib/spaceship/connect_api/models/app.rb +3 -2
  53. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +15 -9
  54. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +5 -0
  55. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -0
  56. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +3 -1
  57. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +8 -2
  58. data/supply/lib/supply/.client.rb.swp +0 -0
  59. data/supply/lib/supply/client.rb +47 -21
  60. data/supply/lib/supply/image_listing.rb +15 -0
  61. data/supply/lib/supply/options.rb +5 -0
  62. data/supply/lib/supply/setup.rb +1 -1
  63. data/supply/lib/supply/uploader.rb +32 -5
  64. data/supply/lib/supply.rb +1 -0
  65. metadata +284 -272
@@ -4221,7 +4221,7 @@ public func downloadFromPlayStore(packageName: String,
4221
4221
 
4222
4222
  Download the universal APK of a given version code from the Google Play Console.
4223
4223
 
4224
- This uses fastlane `Supply` (and the `AndroidPublisher` Google API) to download the Universal APK
4224
+ This uses _fastlane_ `supply` (and the `AndroidPublisher` Google API) to download the Universal APK
4225
4225
  generated by Google after you uploaded an `.aab` bundle to the Play Console.
4226
4226
 
4227
4227
  See https://developers.google.com/android-publisher/api-ref/rest/v3/generatedapks/list
@@ -6734,6 +6734,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
6734
6734
  - s3SecretAccessKey: S3 secret access key
6735
6735
  - s3Bucket: Name of the S3 bucket
6736
6736
  - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
6737
+ - s3SkipEncryption: Skip encryption of all objects uploaded to S3. WARNING: only enable this on S3 buckets with sufficiently restricted permissions and server-side encryption enabled. See https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html
6737
6738
  - gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
6738
6739
  - gitlabHost: GitLab Host (i.e. 'https://gitlab.com')
6739
6740
  - keychainName: Keychain the items should be imported to
@@ -6788,6 +6789,7 @@ public func match(type: String = matchfile.type,
6788
6789
  s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3SecretAccessKey),
6789
6790
  s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3Bucket),
6790
6791
  s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3ObjectPrefix),
6792
+ s3SkipEncryption: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.s3SkipEncryption),
6791
6793
  gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.gitlabProject),
6792
6794
  gitlabHost: String = matchfile.gitlabHost,
6793
6795
  keychainName: String = matchfile.keychainName,
@@ -6840,6 +6842,7 @@ public func match(type: String = matchfile.type,
6840
6842
  let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
6841
6843
  let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
6842
6844
  let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
6845
+ let s3SkipEncryptionArg = s3SkipEncryption.asRubyArgument(name: "s3_skip_encryption", type: nil)
6843
6846
  let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
6844
6847
  let gitlabHostArg = RubyCommand.Argument(name: "gitlab_host", value: gitlabHost, type: nil)
6845
6848
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
@@ -6891,6 +6894,7 @@ public func match(type: String = matchfile.type,
6891
6894
  s3SecretAccessKeyArg,
6892
6895
  s3BucketArg,
6893
6896
  s3ObjectPrefixArg,
6897
+ s3SkipEncryptionArg,
6894
6898
  gitlabProjectArg,
6895
6899
  gitlabHostArg,
6896
6900
  keychainNameArg,
@@ -6953,6 +6957,7 @@ public func match(type: String = matchfile.type,
6953
6957
  - s3SecretAccessKey: S3 secret access key
6954
6958
  - s3Bucket: Name of the S3 bucket
6955
6959
  - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
6960
+ - s3SkipEncryption: Skip encryption of all objects uploaded to S3. WARNING: only enable this on S3 buckets with sufficiently restricted permissions and server-side encryption enabled. See https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html
6956
6961
  - gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
6957
6962
  - gitlabHost: GitLab Host (i.e. 'https://gitlab.com')
6958
6963
  - keychainName: Keychain the items should be imported to
@@ -7011,6 +7016,7 @@ public func matchNuke(type: String = "development",
7011
7016
  s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7012
7017
  s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7013
7018
  s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7019
+ s3SkipEncryption: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7014
7020
  gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7015
7021
  gitlabHost: String = "https://gitlab.com",
7016
7022
  keychainName: String = "login.keychain",
@@ -7063,6 +7069,7 @@ public func matchNuke(type: String = "development",
7063
7069
  let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
7064
7070
  let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
7065
7071
  let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
7072
+ let s3SkipEncryptionArg = s3SkipEncryption.asRubyArgument(name: "s3_skip_encryption", type: nil)
7066
7073
  let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
7067
7074
  let gitlabHostArg = RubyCommand.Argument(name: "gitlab_host", value: gitlabHost, type: nil)
7068
7075
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
@@ -7114,6 +7121,7 @@ public func matchNuke(type: String = "development",
7114
7121
  s3SecretAccessKeyArg,
7115
7122
  s3BucketArg,
7116
7123
  s3ObjectPrefixArg,
7124
+ s3SkipEncryptionArg,
7117
7125
  gitlabProjectArg,
7118
7126
  gitlabHostArg,
7119
7127
  keychainNameArg,
@@ -10942,6 +10950,7 @@ public func ssh(username: String,
10942
10950
  - skipUploadChangelogs: Whether to skip uploading changelogs
10943
10951
  - skipUploadImages: Whether to skip uploading images, screenshots not included
10944
10952
  - skipUploadScreenshots: Whether to skip uploading SCREENSHOTS
10953
+ - syncImageUpload: Whether to use sha256 comparison to skip upload of images and screenshots that are already in Play Store
10945
10954
  - trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
10946
10955
  - trackPromoteReleaseStatus: Promoted track release status (used when promoting a track) - valid values are completed, draft, halted, inProgress
10947
10956
  - validateOnly: Only validate changes with Google Play rather than actually publish
@@ -10984,6 +10993,7 @@ public func supply(packageName: String,
10984
10993
  skipUploadChangelogs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10985
10994
  skipUploadImages: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10986
10995
  skipUploadScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10996
+ syncImageUpload: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10987
10997
  trackPromoteTo: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10988
10998
  trackPromoteReleaseStatus: String = "completed",
10989
10999
  validateOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -11024,6 +11034,7 @@ public func supply(packageName: String,
11024
11034
  let skipUploadChangelogsArg = skipUploadChangelogs.asRubyArgument(name: "skip_upload_changelogs", type: nil)
11025
11035
  let skipUploadImagesArg = skipUploadImages.asRubyArgument(name: "skip_upload_images", type: nil)
11026
11036
  let skipUploadScreenshotsArg = skipUploadScreenshots.asRubyArgument(name: "skip_upload_screenshots", type: nil)
11037
+ let syncImageUploadArg = syncImageUpload.asRubyArgument(name: "sync_image_upload", type: nil)
11027
11038
  let trackPromoteToArg = trackPromoteTo.asRubyArgument(name: "track_promote_to", type: nil)
11028
11039
  let trackPromoteReleaseStatusArg = RubyCommand.Argument(name: "track_promote_release_status", value: trackPromoteReleaseStatus, type: nil)
11029
11040
  let validateOnlyArg = validateOnly.asRubyArgument(name: "validate_only", type: nil)
@@ -11063,6 +11074,7 @@ public func supply(packageName: String,
11063
11074
  skipUploadChangelogsArg,
11064
11075
  skipUploadImagesArg,
11065
11076
  skipUploadScreenshotsArg,
11077
+ syncImageUploadArg,
11066
11078
  trackPromoteToArg,
11067
11079
  trackPromoteReleaseStatusArg,
11068
11080
  validateOnlyArg,
@@ -11191,6 +11203,7 @@ public func swiftlint(mode: String = "lint",
11191
11203
  - s3SecretAccessKey: S3 secret access key
11192
11204
  - s3Bucket: Name of the S3 bucket
11193
11205
  - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
11206
+ - s3SkipEncryption: Skip encryption of all objects uploaded to S3. WARNING: only enable this on S3 buckets with sufficiently restricted permissions and server-side encryption enabled. See https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html
11194
11207
  - gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
11195
11208
  - gitlabHost: GitLab Host (i.e. 'https://gitlab.com')
11196
11209
  - keychainName: Keychain the items should be imported to
@@ -11245,6 +11258,7 @@ public func syncCodeSigning(type: String = "development",
11245
11258
  s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11246
11259
  s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11247
11260
  s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11261
+ s3SkipEncryption: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11248
11262
  gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11249
11263
  gitlabHost: String = "https://gitlab.com",
11250
11264
  keychainName: String = "login.keychain",
@@ -11297,6 +11311,7 @@ public func syncCodeSigning(type: String = "development",
11297
11311
  let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
11298
11312
  let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
11299
11313
  let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
11314
+ let s3SkipEncryptionArg = s3SkipEncryption.asRubyArgument(name: "s3_skip_encryption", type: nil)
11300
11315
  let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
11301
11316
  let gitlabHostArg = RubyCommand.Argument(name: "gitlab_host", value: gitlabHost, type: nil)
11302
11317
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
@@ -11348,6 +11363,7 @@ public func syncCodeSigning(type: String = "development",
11348
11363
  s3SecretAccessKeyArg,
11349
11364
  s3BucketArg,
11350
11365
  s3ObjectPrefixArg,
11366
+ s3SkipEncryptionArg,
11351
11367
  gitlabProjectArg,
11352
11368
  gitlabHostArg,
11353
11369
  keychainNameArg,
@@ -12669,6 +12685,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12669
12685
  - skipUploadChangelogs: Whether to skip uploading changelogs
12670
12686
  - skipUploadImages: Whether to skip uploading images, screenshots not included
12671
12687
  - skipUploadScreenshots: Whether to skip uploading SCREENSHOTS
12688
+ - syncImageUpload: Whether to use sha256 comparison to skip upload of images and screenshots that are already in Play Store
12672
12689
  - trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
12673
12690
  - trackPromoteReleaseStatus: Promoted track release status (used when promoting a track) - valid values are completed, draft, halted, inProgress
12674
12691
  - validateOnly: Only validate changes with Google Play rather than actually publish
@@ -12711,6 +12728,7 @@ public func uploadToPlayStore(packageName: String,
12711
12728
  skipUploadChangelogs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12712
12729
  skipUploadImages: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12713
12730
  skipUploadScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12731
+ syncImageUpload: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12714
12732
  trackPromoteTo: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12715
12733
  trackPromoteReleaseStatus: String = "completed",
12716
12734
  validateOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -12751,6 +12769,7 @@ public func uploadToPlayStore(packageName: String,
12751
12769
  let skipUploadChangelogsArg = skipUploadChangelogs.asRubyArgument(name: "skip_upload_changelogs", type: nil)
12752
12770
  let skipUploadImagesArg = skipUploadImages.asRubyArgument(name: "skip_upload_images", type: nil)
12753
12771
  let skipUploadScreenshotsArg = skipUploadScreenshots.asRubyArgument(name: "skip_upload_screenshots", type: nil)
12772
+ let syncImageUploadArg = syncImageUpload.asRubyArgument(name: "sync_image_upload", type: nil)
12754
12773
  let trackPromoteToArg = trackPromoteTo.asRubyArgument(name: "track_promote_to", type: nil)
12755
12774
  let trackPromoteReleaseStatusArg = RubyCommand.Argument(name: "track_promote_release_status", value: trackPromoteReleaseStatus, type: nil)
12756
12775
  let validateOnlyArg = validateOnly.asRubyArgument(name: "validate_only", type: nil)
@@ -12790,6 +12809,7 @@ public func uploadToPlayStore(packageName: String,
12790
12809
  skipUploadChangelogsArg,
12791
12810
  skipUploadImagesArg,
12792
12811
  skipUploadScreenshotsArg,
12812
+ syncImageUploadArg,
12793
12813
  trackPromoteToArg,
12794
12814
  trackPromoteReleaseStatusArg,
12795
12815
  validateOnlyArg,
@@ -13652,4 +13672,4 @@ public let snapshotfile: Snapshotfile = .init()
13652
13672
 
13653
13673
  // Please don't remove the lines below
13654
13674
  // They are used to detect outdated files
13655
- // FastlaneRunnerAPIVersion [0.9.170]
13675
+ // FastlaneRunnerAPIVersion [0.9.172]
@@ -17,4 +17,4 @@ public class Gymfile: GymfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.214.0
20
+ // Generated with fastlane 2.215.1
@@ -208,4 +208,4 @@ public extension GymfileProtocol {
208
208
 
209
209
  // Please don't remove the lines below
210
210
  // They are used to detect outdated files
211
- // FastlaneRunnerAPIVersion [0.9.120]
211
+ // FastlaneRunnerAPIVersion [0.9.122]
@@ -17,4 +17,4 @@ public class Matchfile: MatchfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.214.0
20
+ // Generated with fastlane 2.215.1
@@ -92,6 +92,9 @@ public protocol MatchfileProtocol: AnyObject {
92
92
  /// Prefix to be used on all objects uploaded to S3
93
93
  var s3ObjectPrefix: String? { get }
94
94
 
95
+ /// Skip encryption of all objects uploaded to S3. WARNING: only enable this on S3 buckets with sufficiently restricted permissions and server-side encryption enabled. See https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html
96
+ var s3SkipEncryption: Bool { get }
97
+
95
98
  /// GitLab Project Path (i.e. 'gitlab-org/gitlab')
96
99
  var gitlabProject: String? { get }
97
100
 
@@ -187,6 +190,7 @@ public extension MatchfileProtocol {
187
190
  var s3SecretAccessKey: String? { return nil }
188
191
  var s3Bucket: String? { return nil }
189
192
  var s3ObjectPrefix: String? { return nil }
193
+ var s3SkipEncryption: Bool { return false }
190
194
  var gitlabProject: String? { return nil }
191
195
  var gitlabHost: String { return "https://gitlab.com" }
192
196
  var keychainName: String { return "login.keychain" }
@@ -212,4 +216,4 @@ public extension MatchfileProtocol {
212
216
 
213
217
  // Please don't remove the lines below
214
218
  // They are used to detect outdated files
215
- // FastlaneRunnerAPIVersion [0.9.114]
219
+ // FastlaneRunnerAPIVersion [0.9.116]
@@ -17,4 +17,4 @@ public class Precheckfile: PrecheckfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.214.0
20
+ // Generated with fastlane 2.215.1
@@ -52,4 +52,4 @@ public extension PrecheckfileProtocol {
52
52
 
53
53
  // Please don't remove the lines below
54
54
  // They are used to detect outdated files
55
- // FastlaneRunnerAPIVersion [0.9.113]
55
+ // FastlaneRunnerAPIVersion [0.9.115]
@@ -17,4 +17,4 @@ public class Scanfile: ScanfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.214.0
20
+ // Generated with fastlane 2.215.1
@@ -320,4 +320,4 @@ public extension ScanfileProtocol {
320
320
 
321
321
  // Please don't remove the lines below
322
322
  // They are used to detect outdated files
323
- // FastlaneRunnerAPIVersion [0.9.125]
323
+ // FastlaneRunnerAPIVersion [0.9.127]
@@ -17,4 +17,4 @@ public class Screengrabfile: ScreengrabfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.214.0
20
+ // Generated with fastlane 2.215.1
@@ -96,4 +96,4 @@ public extension ScreengrabfileProtocol {
96
96
 
97
97
  // Please don't remove the lines below
98
98
  // They are used to detect outdated files
99
- // FastlaneRunnerAPIVersion [0.9.115]
99
+ // FastlaneRunnerAPIVersion [0.9.117]
@@ -17,4 +17,4 @@ public class Snapshotfile: SnapshotfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.214.0
20
+ // Generated with fastlane 2.215.1
@@ -204,4 +204,4 @@ public extension SnapshotfileProtocol {
204
204
 
205
205
  // Please don't remove the lines below
206
206
  // They are used to detect outdated files
207
- // FastlaneRunnerAPIVersion [0.9.109]
207
+ // FastlaneRunnerAPIVersion [0.9.111]
@@ -2,45 +2,55 @@
2
2
  "entries": {
3
3
  "brew": {
4
4
  "swiftformat": {
5
- "version": "0.51.12",
5
+ "version": "0.52.3",
6
6
  "bottle": {
7
7
  "rebuild": 0,
8
8
  "root_url": "https://ghcr.io/v2/homebrew/core",
9
9
  "files": {
10
+ "arm64_sonoma": {
11
+ "cellar": ":any_skip_relocation",
12
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:a5ea23d7a08c20b20981a23f1ebc3221ca5796408934c412c2518598e00eb50f",
13
+ "sha256": "a5ea23d7a08c20b20981a23f1ebc3221ca5796408934c412c2518598e00eb50f"
14
+ },
10
15
  "arm64_ventura": {
11
16
  "cellar": ":any_skip_relocation",
12
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:272dadfe917e9296713f7d41739d315679d77485bcedf9f5f5700523947a9635",
13
- "sha256": "272dadfe917e9296713f7d41739d315679d77485bcedf9f5f5700523947a9635"
17
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:4c60e18bc44c0781d97a96c536aa8bb6e762b79008927c5e7307dcf2c69b6058",
18
+ "sha256": "4c60e18bc44c0781d97a96c536aa8bb6e762b79008927c5e7307dcf2c69b6058"
14
19
  },
15
20
  "arm64_monterey": {
16
21
  "cellar": ":any_skip_relocation",
17
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:fe6ace3786c1e3461c2d7e649e86fecf692e816ef143b1602daaf8ccca674426",
18
- "sha256": "fe6ace3786c1e3461c2d7e649e86fecf692e816ef143b1602daaf8ccca674426"
22
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:d63d1affcfba1ea8b6bf035d4abd834bf2effe0c0cf385ba608f98341da1c837",
23
+ "sha256": "d63d1affcfba1ea8b6bf035d4abd834bf2effe0c0cf385ba608f98341da1c837"
19
24
  },
20
25
  "arm64_big_sur": {
21
26
  "cellar": ":any_skip_relocation",
22
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:e8c39e62f11cead0543225c79a1e3f461f4a3de7595332a2068cf465bd5cb522",
23
- "sha256": "e8c39e62f11cead0543225c79a1e3f461f4a3de7595332a2068cf465bd5cb522"
27
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:d80ec81a9140159181b77145d2dfdcd38488b23b262ef1bd74ab7163d0cbebae",
28
+ "sha256": "d80ec81a9140159181b77145d2dfdcd38488b23b262ef1bd74ab7163d0cbebae"
29
+ },
30
+ "sonoma": {
31
+ "cellar": ":any_skip_relocation",
32
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:1aa6efde9ecda9e98c1b852192e0230b2e84055861382660e93c50e59a80487f",
33
+ "sha256": "1aa6efde9ecda9e98c1b852192e0230b2e84055861382660e93c50e59a80487f"
24
34
  },
25
35
  "ventura": {
26
36
  "cellar": ":any_skip_relocation",
27
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:c39102257e34cc3fff2fec1f439b7d62bc5c4404c3d82d58e0b94db325aae3e2",
28
- "sha256": "c39102257e34cc3fff2fec1f439b7d62bc5c4404c3d82d58e0b94db325aae3e2"
37
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:274da364741558f1f52780e9a92354db212a803cf5d84c2ca9ff632d94ada47d",
38
+ "sha256": "274da364741558f1f52780e9a92354db212a803cf5d84c2ca9ff632d94ada47d"
29
39
  },
30
40
  "monterey": {
31
41
  "cellar": ":any_skip_relocation",
32
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:19ce480a2e73c5bbed64e9b0822d99b9d705d53afc29501265933798bd571dcf",
33
- "sha256": "19ce480a2e73c5bbed64e9b0822d99b9d705d53afc29501265933798bd571dcf"
42
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:b53d82e6f2d42bf1e6fa799983fdfae934b483bc916c34436184fcb7e407f896",
43
+ "sha256": "b53d82e6f2d42bf1e6fa799983fdfae934b483bc916c34436184fcb7e407f896"
34
44
  },
35
45
  "big_sur": {
36
46
  "cellar": ":any_skip_relocation",
37
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:653f90a848b51b79c19ec387ff1f76d892c00a4cb8824a4618793a9bc33b9b3a",
38
- "sha256": "653f90a848b51b79c19ec387ff1f76d892c00a4cb8824a4618793a9bc33b9b3a"
47
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:9bd117c9e2f92bde0f59a4106748a56e57687a1716627ef601e63b15a383ea35",
48
+ "sha256": "9bd117c9e2f92bde0f59a4106748a56e57687a1716627ef601e63b15a383ea35"
39
49
  },
40
50
  "x86_64_linux": {
41
51
  "cellar": "/home/linuxbrew/.linuxbrew/Cellar",
42
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:e3ef2e5695bfdcda2b072211f3071e9c06056e18e3a95a3d60d3d502aa4e8c27",
43
- "sha256": "e3ef2e5695bfdcda2b072211f3071e9c06056e18e3a95a3d60d3d502aa4e8c27"
52
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:384fee82f88b4bf8b30cfe9cec946ebd9127a4741b28e06cec42fc0d9b70c0f6",
53
+ "sha256": "384fee82f88b4bf8b30cfe9cec946ebd9127a4741b28e06cec42fc0d9b70c0f6"
44
54
  }
45
55
  }
46
56
  }
@@ -74,7 +84,7 @@
74
84
  "macOS": "12.5"
75
85
  },
76
86
  "ventura": {
77
- "HOMEBREW_VERSION": "4.0.28-67-ge9ac36a",
87
+ "HOMEBREW_VERSION": "4.1.11-38-gaa2a77b",
78
88
  "HOMEBREW_PREFIX": "/opt/homebrew",
79
89
  "Homebrew/homebrew-core": "api",
80
90
  "CLT": "",
@@ -146,7 +146,7 @@ module FastlaneCore
146
146
 
147
147
  def self.install_wwdr_certificate(cert_alias)
148
148
  url = WWDRCA_CERTIFICATES.find { |c| c[:alias] == cert_alias }.fetch(:url)
149
- file = Tempfile.new(File.basename(url))
149
+ file = Tempfile.new([File.basename(url, ".cer"), ".cer"])
150
150
  filename = file.path
151
151
  keychain = wwdr_keychain
152
152
  keychain = "-k #{keychain.shellescape}" unless keychain.empty?
@@ -120,7 +120,7 @@ module Frameit
120
120
  IPHONE_8_PLUS ||= Frameit::Device.new("iphone-8-plus", "Apple iPhone 8 Plus", 6, [[1242, 2208], [2208, 1242]], 401, Color::SPACE_GRAY)
121
121
  IPHONE_X ||= Frameit::Device.new("iphone-X", "Apple iPhone X", 7, [[1125, 2436], [2436, 1125]], 458, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_58, :use_legacy_iphonex)
122
122
  IPHONE_XS ||= Frameit::Device.new("iphone-XS", "Apple iPhone XS", 8, [[1125, 2436], [2436, 1125]], 458, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_58, :use_legacy_iphonexs)
123
- IPHONE_XR ||= Frameit::Device.new("iphone-XR", "Apple iPhone XR", 8, [[828, 1792], [1792, 828]], 326, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_61, :use_legacy_iphonexr)
123
+ IPHONE_XR ||= Frameit::Device.new("iphone-XR", "Apple iPhone XR", 8, [[828, 1792], [1792, 828]], 326, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_65, :use_legacy_iphonexsmax)
124
124
  IPHONE_XS_MAX ||= Frameit::Device.new("iphone-XS-Max", "Apple iPhone XS Max", 8, [[1242, 2688], [2688, 1242]], 458, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_65, :use_legacy_iphonexsmax)
125
125
  IPHONE_11 ||= Frameit::Device.new("iphone-11", "Apple iPhone 11", 9, [[828, 1792], [1792, 828]], 326, Color::BLACK, Platform::IOS)
126
126
  IPHONE_11_PRO ||= Frameit::Device.new("iphone-11-pro", "Apple iPhone 11 Pro", 9, [[1125, 2436], [2436, 1125]], 458, Color::SPACE_GRAY, Platform::IOS)
@@ -19,19 +19,13 @@ module Match
19
19
  new_password = FastlaneCore::Helper.ask_password(message: "New passphrase for Git Repo: ", confirm: true)
20
20
 
21
21
  # Choose the right storage and encryption implementations
22
- storage = Storage.for_mode(params[:storage_mode], {
23
- git_url: params[:git_url],
24
- shallow_clone: params[:shallow_clone],
25
- skip_docs: params[:skip_docs],
26
- git_branch: params[:git_branch],
27
- git_full_name: params[:git_full_name],
28
- git_user_email: params[:git_user_email],
29
- clone_branch_directly: params[:clone_branch_directly]
30
- })
22
+ storage = Storage.from_params(params)
31
23
  storage.download
32
24
 
33
25
  encryption = Encryption.for_storage_mode(params[:storage_mode], {
34
26
  git_url: params[:git_url],
27
+ s3_bucket: params[:s3_bucket],
28
+ s3_skip_encryption: params[:s3_skip_encryption],
35
29
  working_directory: storage.working_directory
36
30
  })
37
31
  encryption.decrypt_files
@@ -118,16 +118,13 @@ module Match
118
118
  params = FastlaneCore::Configuration.create(Match::Options.available_options, options.__hash__)
119
119
  params.load_configuration_file("Matchfile")
120
120
 
121
- storage = Storage.for_mode(params[:storage_mode], {
122
- git_url: params[:git_url],
123
- shallow_clone: params[:shallow_clone],
124
- git_branch: params[:git_branch],
125
- clone_branch_directly: params[:clone_branch_directly]
126
- })
121
+ storage = Storage.from_params(params)
127
122
  storage.download
128
123
 
129
124
  encryption = Encryption.for_storage_mode(params[:storage_mode], {
130
125
  git_url: params[:git_url],
126
+ s3_bucket: params[:s3_bucket],
127
+ s3_skip_encryption: params[:s3_skip_encryption],
131
128
  working_directory: storage.working_directory
132
129
  })
133
130
  encryption.decrypt_files if encryption
@@ -17,7 +17,7 @@ module Match
17
17
  },
18
18
  "s3" => lambda { |params|
19
19
  params[:keychain_name] = params[:s3_bucket]
20
- return Encryption::OpenSSL.configure(params)
20
+ return params[:s3_skip_encryption] ? nil : Encryption::OpenSSL.configure(params)
21
21
  },
22
22
  "gitlab_secure_files" => lambda { |params|
23
23
  return nil
@@ -15,42 +15,14 @@ module Match
15
15
  profile_path = ensure_valid_file_path(profile_path, "Provisioning profile", ".mobileprovision or .provisionprofile", optional: true)
16
16
 
17
17
  # Storage
18
- storage = Storage.for_mode(params[:storage_mode], {
19
- git_url: params[:git_url],
20
- shallow_clone: params[:shallow_clone],
21
- skip_docs: params[:skip_docs],
22
- git_branch: params[:git_branch],
23
- git_full_name: params[:git_full_name],
24
- git_user_email: params[:git_user_email],
25
- git_private_key: params[:git_private_key],
26
- git_basic_authorization: params[:git_basic_authorization],
27
- git_bearer_authorization: params[:git_bearer_authorization],
28
- clone_branch_directly: params[:clone_branch_directly],
29
- type: params[:type].to_s,
30
- platform: params[:platform].to_s,
31
- google_cloud_bucket_name: params[:google_cloud_bucket_name].to_s,
32
- google_cloud_keys_file: params[:google_cloud_keys_file].to_s,
33
- google_cloud_project_id: params[:google_cloud_project_id].to_s,
34
- skip_google_cloud_account_confirmation: params[:skip_google_cloud_account_confirmation],
35
- s3_bucket: params[:s3_bucket],
36
- s3_region: params[:s3_region],
37
- s3_access_key: params[:s3_access_key],
38
- s3_secret_access_key: params[:s3_secret_access_key],
39
- s3_object_prefix: params[:s3_object_prefix],
40
- gitlab_project: params[:gitlab_project],
41
- gitlab_host: params[:gitlab_host],
42
- readonly: params[:readonly],
43
- username: params[:username],
44
- team_id: params[:team_id],
45
- team_name: params[:team_name],
46
- api_key_path: params[:api_key_path],
47
- api_key: params[:api_key]
48
- })
18
+ storage = Storage.from_params(params)
49
19
  storage.download
50
20
 
51
21
  # Encryption
52
22
  encryption = Encryption.for_storage_mode(params[:storage_mode], {
53
23
  git_url: params[:git_url],
24
+ s3_bucket: params[:s3_bucket],
25
+ s3_skip_encryption: params[:s3_skip_encryption],
54
26
  working_directory: storage.working_directory
55
27
  })
56
28
  encryption.decrypt_files if encryption
@@ -13,13 +13,15 @@ module Match
13
13
 
14
14
  # We init the Google storage client before the git client
15
15
  # to ask for all the missing inputs *before* cloning the git repo
16
- google_cloud_storage = Storage.for_mode("google_cloud", {
16
+ google_cloud_storage = Storage.from_params({
17
+ storage_mode: "google_cloud",
17
18
  google_cloud_bucket_name: params[:google_cloud_bucket_name],
18
19
  google_cloud_keys_file: params[:google_cloud_keys_file],
19
20
  google_cloud_project_id: params[:google_cloud_project_id]
20
21
  })
21
22
 
22
- git_storage = Storage.for_mode("git", {
23
+ git_storage = Storage.from_params({
24
+ storage_mode: "git",
23
25
  git_url: params[:git_url],
24
26
  shallow_clone: params[:shallow_clone],
25
27
  git_branch: params[:git_branch],
@@ -29,6 +31,8 @@ module Match
29
31
 
30
32
  encryption = Encryption.for_storage_mode(params[:storage_mode], {
31
33
  git_url: params[:git_url],
34
+ s3_bucket: params[:s3_bucket],
35
+ s3_skip_encryption: params[:s3_skip_encryption],
32
36
  working_directory: git_storage.working_directory
33
37
  })
34
38
  encryption.decrypt_files if encryption
@@ -34,36 +34,14 @@ module Match
34
34
 
35
35
  spaceship_login
36
36
 
37
- self.storage = Storage.for_mode(params[:storage_mode], {
38
- git_url: params[:git_url],
39
- shallow_clone: params[:shallow_clone],
40
- skip_docs: params[:skip_docs],
41
- git_branch: params[:git_branch],
42
- git_full_name: params[:git_full_name],
43
- git_user_email: params[:git_user_email],
44
-
45
- git_private_key: params[:git_private_key],
46
- git_basic_authorization: params[:git_basic_authorization],
47
- git_bearer_authorization: params[:git_bearer_authorization],
48
-
49
- clone_branch_directly: params[:clone_branch_directly],
50
- google_cloud_bucket_name: params[:google_cloud_bucket_name].to_s,
51
- google_cloud_keys_file: params[:google_cloud_keys_file].to_s,
52
- google_cloud_project_id: params[:google_cloud_project_id].to_s,
53
- s3_region: params[:s3_region].to_s,
54
- s3_access_key: params[:s3_access_key].to_s,
55
- s3_secret_access_key: params[:s3_secret_access_key].to_s,
56
- s3_bucket: params[:s3_bucket].to_s,
57
- s3_object_prefix: params[:s3_object_prefix].to_s,
58
- gitlab_project: params[:gitlab_project],
59
- gitlab_host: params[:gitlab_host],
60
- team_id: params[:team_id] || Spaceship::ConnectAPI.client.portal_team_id
61
- })
37
+ self.storage = Storage.from_params(params)
62
38
  self.storage.download
63
39
 
64
40
  # After the download was complete
65
41
  self.encryption = Encryption.for_storage_mode(params[:storage_mode], {
66
42
  git_url: params[:git_url],
43
+ s3_bucket: params[:s3_bucket],
44
+ s3_skip_encryption: params[:s3_skip_encryption],
67
45
  working_directory: storage.working_directory
68
46
  })
69
47
  self.encryption.decrypt_files if self.encryption
@@ -4,6 +4,7 @@ require 'credentials_manager/appfile_config'
4
4
  require_relative 'module'
5
5
 
6
6
  module Match
7
+ # rubocop:disable Metrics/ClassLength
7
8
  class Options
8
9
  # This is match specific, as users can append storage specific options
9
10
  def self.append_option(option)
@@ -222,6 +223,11 @@ module Match
222
223
  env_name: "MATCH_S3_OBJECT_PREFIX",
223
224
  description: "Prefix to be used on all objects uploaded to S3",
224
225
  optional: true),
226
+ FastlaneCore::ConfigItem.new(key: :s3_skip_encryption,
227
+ env_name: "MATCH_S3_SKIP_ENCRYPTION",
228
+ description: "Skip encryption of all objects uploaded to S3. WARNING: only enable this on S3 buckets with sufficiently restricted permissions and server-side encryption enabled. See https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html",
229
+ type: Boolean,
230
+ default_value: false),
225
231
 
226
232
  # Storage: GitLab Secure Files
227
233
  FastlaneCore::ConfigItem.new(key: :gitlab_project,
@@ -349,4 +355,5 @@ module Match
349
355
  ]
350
356
  end
351
357
  end
358
+ # rubocop:enable Metrics/ClassLength
352
359
  end
@@ -31,43 +31,16 @@ module Match
31
31
  update_optional_values_depending_on_storage_type(params)
32
32
 
33
33
  # Choose the right storage and encryption implementations
34
- self.storage = Storage.for_mode(params[:storage_mode], {
35
- git_url: params[:git_url],
36
- shallow_clone: params[:shallow_clone],
37
- skip_docs: params[:skip_docs],
38
- git_branch: params[:git_branch],
39
- git_full_name: params[:git_full_name],
40
- git_user_email: params[:git_user_email],
41
- clone_branch_directly: params[:clone_branch_directly],
42
- git_basic_authorization: params[:git_basic_authorization],
43
- git_bearer_authorization: params[:git_bearer_authorization],
44
- git_private_key: params[:git_private_key],
45
- type: params[:type].to_s,
46
- generate_apple_certs: params[:generate_apple_certs],
47
- platform: params[:platform].to_s,
48
- google_cloud_bucket_name: params[:google_cloud_bucket_name].to_s,
49
- google_cloud_keys_file: params[:google_cloud_keys_file].to_s,
50
- google_cloud_project_id: params[:google_cloud_project_id].to_s,
51
- skip_google_cloud_account_confirmation: params[:skip_google_cloud_account_confirmation],
52
- s3_region: params[:s3_region],
53
- s3_access_key: params[:s3_access_key],
54
- s3_secret_access_key: params[:s3_secret_access_key],
55
- s3_bucket: params[:s3_bucket],
56
- s3_object_prefix: params[:s3_object_prefix],
57
- gitlab_project: params[:gitlab_project],
58
- gitlab_host: params[:gitlab_host],
59
- readonly: params[:readonly],
60
- username: params[:readonly] ? nil : params[:username], # only pass username if not readonly
61
- team_id: params[:team_id],
62
- team_name: params[:team_name],
63
- api_key_path: params[:api_key_path],
64
- api_key: params[:api_key]
65
- })
34
+ storage_params = params
35
+ storage_params[:username] = params[:readonly] ? nil : params[:username] # only pass username if not readonly
36
+ self.storage = Storage.from_params(storage_params)
66
37
  storage.download
67
38
 
68
39
  # Init the encryption only after the `storage.download` was called to have the right working directory
69
40
  encryption = Encryption.for_storage_mode(params[:storage_mode], {
70
41
  git_url: params[:git_url],
42
+ s3_bucket: params[:s3_bucket],
43
+ s3_skip_encryption: params[:s3_skip_encryption],
71
44
  working_directory: storage.working_directory
72
45
  })
73
46
  encryption.decrypt_files if encryption