fastlane 2.161.0 → 2.162.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +76 -76
  3. data/cert/lib/cert/options.rb +28 -1
  4. data/cert/lib/cert/runner.rb +50 -33
  5. data/deliver/lib/deliver/app_screenshot_iterator.rb +4 -4
  6. data/deliver/lib/deliver/options.rb +2 -2
  7. data/deliver/lib/deliver/upload_metadata.rb +1 -0
  8. data/deliver/lib/deliver/upload_screenshots.rb +25 -8
  9. data/fastlane/lib/fastlane/version.rb +1 -1
  10. data/fastlane/swift/Deliverfile.swift +1 -1
  11. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  12. data/fastlane/swift/Fastlane.swift +51 -3
  13. data/fastlane/swift/Gymfile.swift +1 -1
  14. data/fastlane/swift/GymfileProtocol.swift +1 -1
  15. data/fastlane/swift/Matchfile.swift +1 -1
  16. data/fastlane/swift/MatchfileProtocol.swift +15 -3
  17. data/fastlane/swift/Precheckfile.swift +1 -1
  18. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  19. data/fastlane/swift/Scanfile.swift +1 -1
  20. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  21. data/fastlane/swift/Screengrabfile.swift +1 -1
  22. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  23. data/fastlane/swift/Snapshotfile.swift +1 -1
  24. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  25. data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +6 -7
  26. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +2 -2
  27. data/match/lib/match/generator.rb +6 -1
  28. data/match/lib/match/importer.rb +39 -6
  29. data/match/lib/match/migrate.rb +13 -2
  30. data/match/lib/match/nuke.rb +65 -22
  31. data/match/lib/match/options.rb +26 -1
  32. data/match/lib/match/runner.rb +38 -10
  33. data/match/lib/match/spaceship_ensure.rb +27 -21
  34. data/match/lib/match/storage/google_cloud_storage.rb +20 -3
  35. data/match/lib/match/storage/s3_storage.rb +19 -3
  36. data/sigh/lib/sigh/options.rb +21 -0
  37. data/sigh/lib/sigh/runner.rb +80 -38
  38. data/spaceship/lib/spaceship/client.rb +2 -1
  39. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  40. data/spaceship/lib/spaceship/connect_api/api_client.rb +3 -3
  41. data/spaceship/lib/spaceship/connect_api/client.rb +13 -3
  42. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +3 -1
  43. data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +2 -1
  44. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +42 -0
  45. data/spaceship/lib/spaceship/connect_api/models/profile.rb +7 -1
  46. data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +59 -0
  47. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +28 -2
  48. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +13 -0
  49. data/spaceship/lib/spaceship/connect_api/users/users.rb +40 -0
  50. metadata +19 -18
@@ -52,10 +52,10 @@ module Deliver
52
52
  end
53
53
  end
54
54
 
55
- # Iterate given local app_screenshot over localizations and app_screenshot_sets with index within each app_screenshot_set
55
+ # Iterate given local app_screenshot over localizations and app_screenshot_sets
56
56
  #
57
57
  # @param screenshots_per_language [Hash<String, Array<Deliver::AppScreenshot>]
58
- # @yield [localization, app_screenshot_set, app_screenshot, index]
58
+ # @yield [localization, app_screenshot_set, app_screenshot]
59
59
  # @yieldparam [optional, Spaceship::ConnectAPI::AppStoreVersionLocalization] localization
60
60
  # @yieldparam [optional, Spaceship::ConnectAPI::AppStoreScreenshotSet] app_screenshot_set
61
61
  # @yieldparam [optional, Deliver::AppScreenshot] screenshot
@@ -85,8 +85,8 @@ module Deliver
85
85
  app_screenshot_set ||= localization.create_app_screenshot_set(attributes: { screenshotDisplayType: display_type })
86
86
 
87
87
  # iterate over screenshots per display size with index
88
- screenshots.each.with_index do |screenshot, index|
89
- yield(localization, app_screenshot_set, screenshot, index)
88
+ screenshots.each do |screenshot|
89
+ yield(localization, app_screenshot_set, screenshot)
90
90
  end
91
91
  end
92
92
  end
@@ -16,7 +16,7 @@ module Deliver
16
16
  env_name: "DELIVER_API_KEY_PATH",
17
17
  description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)",
18
18
  optional: true,
19
- conflicting_options: [:username],
19
+ conflicting_options: [:api_key],
20
20
  verify_block: proc do |value|
21
21
  UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
22
22
  end),
@@ -26,7 +26,7 @@ module Deliver
26
26
  type: Hash,
27
27
  optional: true,
28
28
  sensitive: true,
29
- conflicting_options: [:api_key_path, :username]),
29
+ conflicting_options: [:api_key_path]),
30
30
 
31
31
  FastlaneCore::ConfigItem.new(key: :username,
32
32
  short_option: "-u",
@@ -584,6 +584,7 @@ module Deliver
584
584
  def set_review_information(version, options)
585
585
  return unless options[:app_review_information]
586
586
  info = options[:app_review_information]
587
+ info = info.collect { |k, v| [k.to_sym, v] }.to_h
587
588
  UI.user_error!("`app_review_information` must be a hash", show_github_issues: true) unless info.kind_of?(Hash)
588
589
 
589
590
  attributes = {}
@@ -126,10 +126,16 @@ module Deliver
126
126
  end
127
127
  end
128
128
 
129
- number_of_screenshots = 0
129
+ # Each app_screenshot_set can have only 10 images
130
+ number_of_screenshots_per_set = {}
131
+ total_number_of_screenshots = 0
132
+
130
133
  iterator = AppScreenshotIterator.new(localizations)
131
- iterator.each_local_screenshot(screenshots_per_language) do |localization, app_screenshot_set, screenshot, index|
132
- if index >= 10
134
+ iterator.each_local_screenshot(screenshots_per_language) do |localization, app_screenshot_set, screenshot|
135
+ # Initialize counter on each app screenshot set
136
+ number_of_screenshots_per_set[app_screenshot_set] ||= (app_screenshot_set.app_screenshots || []).count
137
+
138
+ if number_of_screenshots_per_set[app_screenshot_set] >= 10
133
139
  UI.error("Too many screenshots found for device '#{screenshot.device_type}' in '#{screenshot.language}', skipping this one (#{screenshot.path})")
134
140
  next
135
141
  end
@@ -141,10 +147,12 @@ module Deliver
141
147
  if duplicate
142
148
  UI.message("Previous uploaded. Skipping '#{screenshot.path}'...")
143
149
  else
150
+ UI.verbose("Queued uplaod sceeenshot job for #{localization.locale} #{app_screenshot_set.screenshot_display_type} #{screenshot.path}")
144
151
  worker.enqueue(UploadScreenshotJob.new(app_screenshot_set, screenshot.path))
152
+ number_of_screenshots_per_set[app_screenshot_set] += 1
145
153
  end
146
154
 
147
- number_of_screenshots += 1
155
+ total_number_of_screenshots += 1
148
156
  end
149
157
 
150
158
  worker.start
@@ -154,7 +162,7 @@ module Deliver
154
162
  Helper.show_loading_indicator("Waiting for all the screenshots processed...")
155
163
  states = wait_for_complete(iterator)
156
164
  Helper.hide_loading_indicator
157
- retry_upload_screenshots_if_needed(iterator, states, number_of_screenshots, tries, localizations, screenshots_per_language)
165
+ retry_upload_screenshots_if_needed(iterator, states, total_number_of_screenshots, tries, localizations, screenshots_per_language)
158
166
 
159
167
  UI.message("Successfully uploaded all screenshots")
160
168
  end
@@ -203,12 +211,21 @@ module Deliver
203
211
  # Check if local screenshots' checksum exist on App Store Connect
204
212
  checksum_to_app_screenshot = iterator.each_app_screenshot.map { |_, _, app_screenshot| [app_screenshot.source_file_checksum, app_screenshot] }.to_h
205
213
 
206
- missing_local_screenshots = iterator.each_local_screenshot(screenshots_per_language).select do |_, _, local_screenshot, index|
214
+ number_of_screenshots_per_set = {}
215
+ missing_local_screenshots = iterator.each_local_screenshot(screenshots_per_language).select do |_, app_screenshot_set, local_screenshot|
216
+ number_of_screenshots_per_set[app_screenshot_set] ||= (app_screenshot_set.app_screenshots || []).count
207
217
  checksum = UploadScreenshots.calculate_checksum(local_screenshot.path)
208
- checksum_to_app_screenshot[checksum].nil? && index < 10 # if index is more than 10, it's skipped
218
+
219
+ if checksum_to_app_screenshot[checksum]
220
+ next(false)
221
+ else
222
+ is_missing = number_of_screenshots_per_set[app_screenshot_set] < 10 # if it's more than 10, it's skipped
223
+ number_of_screenshots_per_set[app_screenshot_set] += 1
224
+ next(is_missing)
225
+ end
209
226
  end
210
227
 
211
- missing_local_screenshots.each do |_, _, screenshot, _|
228
+ missing_local_screenshots.each do |_, _, screenshot|
212
229
  UI.error("#{screenshot.path} is missing on App Store Connect.")
213
230
  end
214
231
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.161.0'.freeze
2
+ VERSION = '2.162.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '0.49.1'.freeze
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.161.0
20
+ // Generated with fastlane 2.162.0
@@ -256,4 +256,4 @@ public extension DeliverfileProtocol {
256
256
 
257
257
  // Please don't remove the lines below
258
258
  // They are used to detect outdated files
259
- // FastlaneRunnerAPIVersion [0.9.44]
259
+ // FastlaneRunnerAPIVersion [0.9.45]
@@ -1844,6 +1844,8 @@ public func carthage(command: String = "bootstrap",
1844
1844
  - type: Create specific certificate type (takes precedence over :development)
1845
1845
  - force: Create a certificate even if an existing certificate exists
1846
1846
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
1847
+ - apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
1848
+ - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
1847
1849
  - username: Your Apple ID Username
1848
1850
  - teamId: The ID of your Developer Portal team if you're in multiple teams
1849
1851
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -1851,6 +1853,7 @@ public func carthage(command: String = "bootstrap",
1851
1853
  - outputPath: The path to a directory in which all certificates and private keys should be stored
1852
1854
  - keychainPath: Path to a custom keychain
1853
1855
  - keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password
1856
+ - skipSetPartitionList: Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing
1854
1857
  - platform: Set the provisioning profile's platform (ios, macos)
1855
1858
 
1856
1859
  **Important**: It is recommended to use [match](https://docs.fastlane.tools/actions/match/) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your certificates. Use _cert_ directly only if you want full control over what's going on and know more about codesigning.
@@ -1860,6 +1863,8 @@ public func cert(development: Bool = false,
1860
1863
  type: String? = nil,
1861
1864
  force: Bool = false,
1862
1865
  generateAppleCerts: Bool = true,
1866
+ apiKeyPath: String? = nil,
1867
+ apiKey: [String: Any]? = nil,
1863
1868
  username: String,
1864
1869
  teamId: String? = nil,
1865
1870
  teamName: String? = nil,
@@ -1867,12 +1872,15 @@ public func cert(development: Bool = false,
1867
1872
  outputPath: String = ".",
1868
1873
  keychainPath: String,
1869
1874
  keychainPassword: String? = nil,
1875
+ skipSetPartitionList: Bool = false,
1870
1876
  platform: String = "ios")
1871
1877
  {
1872
1878
  let command = RubyCommand(commandID: "", methodName: "cert", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
1873
1879
  RubyCommand.Argument(name: "type", value: type),
1874
1880
  RubyCommand.Argument(name: "force", value: force),
1875
1881
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
1882
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
1883
+ RubyCommand.Argument(name: "api_key", value: apiKey),
1876
1884
  RubyCommand.Argument(name: "username", value: username),
1877
1885
  RubyCommand.Argument(name: "team_id", value: teamId),
1878
1886
  RubyCommand.Argument(name: "team_name", value: teamName),
@@ -1880,6 +1888,7 @@ public func cert(development: Bool = false,
1880
1888
  RubyCommand.Argument(name: "output_path", value: outputPath),
1881
1889
  RubyCommand.Argument(name: "keychain_path", value: keychainPath),
1882
1890
  RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
1891
+ RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
1883
1892
  RubyCommand.Argument(name: "platform", value: platform)])
1884
1893
  _ = runner.executeCommand(command)
1885
1894
  }
@@ -3323,6 +3332,8 @@ public func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
3323
3332
  - type: Create specific certificate type (takes precedence over :development)
3324
3333
  - force: Create a certificate even if an existing certificate exists
3325
3334
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
3335
+ - apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
3336
+ - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
3326
3337
  - username: Your Apple ID Username
3327
3338
  - teamId: The ID of your Developer Portal team if you're in multiple teams
3328
3339
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -3330,6 +3341,7 @@ public func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
3330
3341
  - outputPath: The path to a directory in which all certificates and private keys should be stored
3331
3342
  - keychainPath: Path to a custom keychain
3332
3343
  - keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password
3344
+ - skipSetPartitionList: Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing
3333
3345
  - platform: Set the provisioning profile's platform (ios, macos)
3334
3346
 
3335
3347
  **Important**: It is recommended to use [match](https://docs.fastlane.tools/actions/match/) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your certificates. Use _cert_ directly only if you want full control over what's going on and know more about codesigning.
@@ -3339,6 +3351,8 @@ public func getCertificates(development: Bool = false,
3339
3351
  type: String? = nil,
3340
3352
  force: Bool = false,
3341
3353
  generateAppleCerts: Bool = true,
3354
+ apiKeyPath: String? = nil,
3355
+ apiKey: [String: Any]? = nil,
3342
3356
  username: String,
3343
3357
  teamId: String? = nil,
3344
3358
  teamName: String? = nil,
@@ -3346,12 +3360,15 @@ public func getCertificates(development: Bool = false,
3346
3360
  outputPath: String = ".",
3347
3361
  keychainPath: String,
3348
3362
  keychainPassword: String? = nil,
3363
+ skipSetPartitionList: Bool = false,
3349
3364
  platform: String = "ios")
3350
3365
  {
3351
3366
  let command = RubyCommand(commandID: "", methodName: "get_certificates", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
3352
3367
  RubyCommand.Argument(name: "type", value: type),
3353
3368
  RubyCommand.Argument(name: "force", value: force),
3354
3369
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
3370
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
3371
+ RubyCommand.Argument(name: "api_key", value: apiKey),
3355
3372
  RubyCommand.Argument(name: "username", value: username),
3356
3373
  RubyCommand.Argument(name: "team_id", value: teamId),
3357
3374
  RubyCommand.Argument(name: "team_name", value: teamName),
@@ -3359,6 +3376,7 @@ public func getCertificates(development: Bool = false,
3359
3376
  RubyCommand.Argument(name: "output_path", value: outputPath),
3360
3377
  RubyCommand.Argument(name: "keychain_path", value: keychainPath),
3361
3378
  RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
3379
+ RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
3362
3380
  RubyCommand.Argument(name: "platform", value: platform)])
3363
3381
  _ = runner.executeCommand(command)
3364
3382
  }
@@ -3495,6 +3513,8 @@ public func getManagedPlayStorePublishingRights(jsonKey: String? = nil,
3495
3513
  - skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
3496
3514
  - force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
3497
3515
  - appIdentifier: The bundle identifier of your app
3516
+ - apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
3517
+ - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
3498
3518
  - username: Your Apple ID Username
3499
3519
  - teamId: The ID of your Developer Portal team if you're in multiple teams
3500
3520
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -3521,6 +3541,8 @@ public func getProvisioningProfile(adhoc: Bool = false,
3521
3541
  skipInstall: Bool = false,
3522
3542
  force: Bool = false,
3523
3543
  appIdentifier: String,
3544
+ apiKeyPath: String? = nil,
3545
+ apiKey: [String: Any]? = nil,
3524
3546
  username: String,
3525
3547
  teamId: String? = nil,
3526
3548
  teamName: String? = nil,
@@ -3543,6 +3565,8 @@ public func getProvisioningProfile(adhoc: Bool = false,
3543
3565
  RubyCommand.Argument(name: "skip_install", value: skipInstall),
3544
3566
  RubyCommand.Argument(name: "force", value: force),
3545
3567
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
3568
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
3569
+ RubyCommand.Argument(name: "api_key", value: apiKey),
3546
3570
  RubyCommand.Argument(name: "username", value: username),
3547
3571
  RubyCommand.Argument(name: "team_id", value: teamId),
3548
3572
  RubyCommand.Argument(name: "team_name", value: teamName),
@@ -4710,6 +4734,8 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
4710
4734
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
4711
4735
  - skipProvisioningProfiles: Skip syncing provisioning profiles
4712
4736
  - appIdentifier: The bundle identifier(s) of your app (comma-separated)
4737
+ - apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
4738
+ - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
4713
4739
  - username: Your Apple ID Username
4714
4740
  - teamId: The ID of your Developer Portal team if you're in multiple teams
4715
4741
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -4743,6 +4769,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
4743
4769
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
4744
4770
  - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
4745
4771
  - outputPath: Path in which to export certificates, key and profile
4772
+ - skipSetPartitionList: Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing
4746
4773
  - verbose: Print out extra information and all commands
4747
4774
 
4748
4775
  More information: https://docs.fastlane.tools/actions/match/
@@ -4753,7 +4780,9 @@ public func match(type: Any = matchfile.type,
4753
4780
  generateAppleCerts: Bool = matchfile.generateAppleCerts,
4754
4781
  skipProvisioningProfiles: Bool = matchfile.skipProvisioningProfiles,
4755
4782
  appIdentifier: [String] = matchfile.appIdentifier,
4756
- username: Any = matchfile.username,
4783
+ apiKeyPath: Any? = matchfile.apiKeyPath,
4784
+ apiKey: [String: Any]? = matchfile.apiKey,
4785
+ username: Any? = matchfile.username,
4757
4786
  teamId: Any? = matchfile.teamId,
4758
4787
  teamName: Any? = matchfile.teamName,
4759
4788
  storageMode: Any = matchfile.storageMode,
@@ -4786,6 +4815,7 @@ public func match(type: Any = matchfile.type,
4786
4815
  profileName: Any? = matchfile.profileName,
4787
4816
  failOnNameTaken: Bool = matchfile.failOnNameTaken,
4788
4817
  outputPath: Any? = matchfile.outputPath,
4818
+ skipSetPartitionList: Bool = matchfile.skipSetPartitionList,
4789
4819
  verbose: Bool = matchfile.verbose)
4790
4820
  {
4791
4821
  let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
@@ -4794,6 +4824,8 @@ public func match(type: Any = matchfile.type,
4794
4824
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
4795
4825
  RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
4796
4826
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
4827
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
4828
+ RubyCommand.Argument(name: "api_key", value: apiKey),
4797
4829
  RubyCommand.Argument(name: "username", value: username),
4798
4830
  RubyCommand.Argument(name: "team_id", value: teamId),
4799
4831
  RubyCommand.Argument(name: "team_name", value: teamName),
@@ -4827,6 +4859,7 @@ public func match(type: Any = matchfile.type,
4827
4859
  RubyCommand.Argument(name: "profile_name", value: profileName),
4828
4860
  RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
4829
4861
  RubyCommand.Argument(name: "output_path", value: outputPath),
4862
+ RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
4830
4863
  RubyCommand.Argument(name: "verbose", value: verbose)])
4831
4864
  _ = runner.executeCommand(command)
4832
4865
  }
@@ -6811,6 +6844,8 @@ public func setupTravis(force: Bool = false) {
6811
6844
  - skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
6812
6845
  - force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
6813
6846
  - appIdentifier: The bundle identifier of your app
6847
+ - apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
6848
+ - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
6814
6849
  - username: Your Apple ID Username
6815
6850
  - teamId: The ID of your Developer Portal team if you're in multiple teams
6816
6851
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -6837,6 +6872,8 @@ public func sigh(adhoc: Bool = false,
6837
6872
  skipInstall: Bool = false,
6838
6873
  force: Bool = false,
6839
6874
  appIdentifier: String,
6875
+ apiKeyPath: String? = nil,
6876
+ apiKey: [String: Any]? = nil,
6840
6877
  username: String,
6841
6878
  teamId: String? = nil,
6842
6879
  teamName: String? = nil,
@@ -6859,6 +6896,8 @@ public func sigh(adhoc: Bool = false,
6859
6896
  RubyCommand.Argument(name: "skip_install", value: skipInstall),
6860
6897
  RubyCommand.Argument(name: "force", value: force),
6861
6898
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
6899
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
6900
+ RubyCommand.Argument(name: "api_key", value: apiKey),
6862
6901
  RubyCommand.Argument(name: "username", value: username),
6863
6902
  RubyCommand.Argument(name: "team_id", value: teamId),
6864
6903
  RubyCommand.Argument(name: "team_name", value: teamName),
@@ -7601,6 +7640,8 @@ public func swiftlint(mode: Any = "lint",
7601
7640
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
7602
7641
  - skipProvisioningProfiles: Skip syncing provisioning profiles
7603
7642
  - appIdentifier: The bundle identifier(s) of your app (comma-separated)
7643
+ - apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
7644
+ - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
7604
7645
  - username: Your Apple ID Username
7605
7646
  - teamId: The ID of your Developer Portal team if you're in multiple teams
7606
7647
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -7634,6 +7675,7 @@ public func swiftlint(mode: Any = "lint",
7634
7675
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
7635
7676
  - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
7636
7677
  - outputPath: Path in which to export certificates, key and profile
7678
+ - skipSetPartitionList: Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing
7637
7679
  - verbose: Print out extra information and all commands
7638
7680
 
7639
7681
  More information: https://docs.fastlane.tools/actions/match/
@@ -7644,7 +7686,9 @@ public func syncCodeSigning(type: String = "development",
7644
7686
  generateAppleCerts: Bool = true,
7645
7687
  skipProvisioningProfiles: Bool = false,
7646
7688
  appIdentifier: [String],
7647
- username: String,
7689
+ apiKeyPath: String? = nil,
7690
+ apiKey: [String: Any]? = nil,
7691
+ username: String? = nil,
7648
7692
  teamId: String? = nil,
7649
7693
  teamName: String? = nil,
7650
7694
  storageMode: String = "git",
@@ -7677,6 +7721,7 @@ public func syncCodeSigning(type: String = "development",
7677
7721
  profileName: String? = nil,
7678
7722
  failOnNameTaken: Bool = false,
7679
7723
  outputPath: String? = nil,
7724
+ skipSetPartitionList: Bool = false,
7680
7725
  verbose: Bool = false)
7681
7726
  {
7682
7727
  let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
@@ -7685,6 +7730,8 @@ public func syncCodeSigning(type: String = "development",
7685
7730
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
7686
7731
  RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
7687
7732
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
7733
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
7734
+ RubyCommand.Argument(name: "api_key", value: apiKey),
7688
7735
  RubyCommand.Argument(name: "username", value: username),
7689
7736
  RubyCommand.Argument(name: "team_id", value: teamId),
7690
7737
  RubyCommand.Argument(name: "team_name", value: teamName),
@@ -7718,6 +7765,7 @@ public func syncCodeSigning(type: String = "development",
7718
7765
  RubyCommand.Argument(name: "profile_name", value: profileName),
7719
7766
  RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
7720
7767
  RubyCommand.Argument(name: "output_path", value: outputPath),
7768
+ RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
7721
7769
  RubyCommand.Argument(name: "verbose", value: verbose)])
7722
7770
  _ = runner.executeCommand(command)
7723
7771
  }
@@ -9309,4 +9357,4 @@ public let snapshotfile = Snapshotfile()
9309
9357
 
9310
9358
  // Please don't remove the lines below
9311
9359
  // They are used to detect outdated files
9312
- // FastlaneRunnerAPIVersion [0.9.97]
9360
+ // FastlaneRunnerAPIVersion [0.9.98]
@@ -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.161.0
20
+ // Generated with fastlane 2.162.0
@@ -184,4 +184,4 @@ public extension GymfileProtocol {
184
184
 
185
185
  // Please don't remove the lines below
186
186
  // They are used to detect outdated files
187
- // FastlaneRunnerAPIVersion [0.9.47]
187
+ // FastlaneRunnerAPIVersion [0.9.48]
@@ -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.161.0
20
+ // Generated with fastlane 2.162.0
@@ -20,8 +20,14 @@ public protocol MatchfileProtocol: class {
20
20
  /// The bundle identifier(s) of your app (comma-separated)
21
21
  var appIdentifier: [String] { get }
22
22
 
23
+ /// Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
24
+ var apiKeyPath: String? { get }
25
+
26
+ /// Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
27
+ var apiKey: [String: Any]? { get }
28
+
23
29
  /// Your Apple ID Username
24
- var username: String { get }
30
+ var username: String? { get }
25
31
 
26
32
  /// The ID of your Developer Portal team if you're in multiple teams
27
33
  var teamId: String? { get }
@@ -119,6 +125,9 @@ public protocol MatchfileProtocol: class {
119
125
  /// Path in which to export certificates, key and profile
120
126
  var outputPath: String? { get }
121
127
 
128
+ /// Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing
129
+ var skipSetPartitionList: Bool { get }
130
+
122
131
  /// Print out extra information and all commands
123
132
  var verbose: Bool { get }
124
133
  }
@@ -130,7 +139,9 @@ public extension MatchfileProtocol {
130
139
  var generateAppleCerts: Bool { return true }
131
140
  var skipProvisioningProfiles: Bool { return false }
132
141
  var appIdentifier: [String] { return [] }
133
- var username: String { return "" }
142
+ var apiKeyPath: String? { return nil }
143
+ var apiKey: [String: Any]? { return nil }
144
+ var username: String? { return nil }
134
145
  var teamId: String? { return nil }
135
146
  var teamName: String? { return nil }
136
147
  var storageMode: String { return "git" }
@@ -163,9 +174,10 @@ public extension MatchfileProtocol {
163
174
  var profileName: String? { return nil }
164
175
  var failOnNameTaken: Bool { return false }
165
176
  var outputPath: String? { return nil }
177
+ var skipSetPartitionList: Bool { return false }
166
178
  var verbose: Bool { return false }
167
179
  }
168
180
 
169
181
  // Please don't remove the lines below
170
182
  // They are used to detect outdated files
171
- // FastlaneRunnerAPIVersion [0.9.41]
183
+ // FastlaneRunnerAPIVersion [0.9.42]