fastlane 2.161.0 → 2.166.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +78 -78
  3. data/cert/lib/cert/options.rb +28 -1
  4. data/cert/lib/cert/runner.rb +51 -34
  5. data/deliver/lib/deliver/.upload_screenshots.rb.swp +0 -0
  6. data/deliver/lib/deliver/app_screenshot_iterator.rb +4 -4
  7. data/deliver/lib/deliver/module.rb +2 -0
  8. data/deliver/lib/deliver/options.rb +5 -5
  9. data/deliver/lib/deliver/queue_worker.rb +14 -29
  10. data/deliver/lib/deliver/upload_metadata.rb +20 -5
  11. data/deliver/lib/deliver/upload_screenshots.rb +28 -13
  12. data/fastlane/lib/fastlane/actions/.download_dsyms.rb.swp +0 -0
  13. data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
  14. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +39 -3
  15. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +9 -0
  16. data/fastlane/lib/fastlane/actions/appledoc.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +1 -0
  18. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +5 -1
  19. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +9 -0
  20. data/fastlane/lib/fastlane/actions/get_certificates.rb +1 -0
  21. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +1 -0
  22. data/fastlane/lib/fastlane/actions/import_from_git.rb +9 -1
  23. data/fastlane/lib/fastlane/actions/is_ci.rb +1 -1
  24. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +15 -0
  25. data/fastlane/lib/fastlane/actions/register_device.rb +46 -5
  26. data/fastlane/lib/fastlane/actions/register_devices.rb +50 -16
  27. data/fastlane/lib/fastlane/actions/set_changelog.rb +31 -3
  28. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +1 -0
  29. data/fastlane/lib/fastlane/actions/update_fastlane.rb +24 -8
  30. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +3 -2
  31. data/fastlane/lib/fastlane/cli_tools_distributor.rb +1 -1
  32. data/fastlane/lib/fastlane/fast_file.rb +74 -23
  33. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -0
  34. data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
  35. data/fastlane/lib/fastlane/version.rb +1 -1
  36. data/fastlane/swift/Deliverfile.swift +1 -1
  37. data/fastlane/swift/DeliverfileProtocol.swift +4 -4
  38. data/fastlane/swift/Fastlane.swift +119 -23
  39. data/fastlane/swift/Gymfile.swift +1 -1
  40. data/fastlane/swift/GymfileProtocol.swift +1 -1
  41. data/fastlane/swift/LaneFileProtocol.swift +15 -19
  42. data/fastlane/swift/MainProcess.swift +1 -1
  43. data/fastlane/swift/Matchfile.swift +1 -1
  44. data/fastlane/swift/MatchfileProtocol.swift +20 -4
  45. data/fastlane/swift/Precheckfile.swift +1 -1
  46. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  47. data/fastlane/swift/Scanfile.swift +1 -1
  48. data/fastlane/swift/ScanfileProtocol.swift +5 -1
  49. data/fastlane/swift/Screengrabfile.swift +1 -1
  50. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  51. data/fastlane/swift/Snapshotfile.swift +1 -1
  52. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  53. data/fastlane/swift/main.swift +1 -1
  54. data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +6 -7
  55. data/fastlane_core/lib/fastlane_core/device_manager.rb +8 -4
  56. data/fastlane_core/lib/fastlane_core/helper.rb +10 -2
  57. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +3 -3
  58. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +3 -3
  59. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +2 -2
  60. data/match/lib/match/generator.rb +6 -1
  61. data/match/lib/match/importer.rb +63 -18
  62. data/match/lib/match/migrate.rb +13 -2
  63. data/match/lib/match/nuke.rb +65 -22
  64. data/match/lib/match/options.rb +33 -2
  65. data/match/lib/match/runner.rb +38 -10
  66. data/match/lib/match/spaceship_ensure.rb +27 -21
  67. data/match/lib/match/storage/google_cloud_storage.rb +20 -3
  68. data/match/lib/match/storage/s3_storage.rb +19 -3
  69. data/scan/lib/scan/detect_values.rb +8 -9
  70. data/scan/lib/scan/module.rb +4 -0
  71. data/scan/lib/scan/options.rb +9 -0
  72. data/scan/lib/scan/runner.rb +2 -1
  73. data/sigh/lib/assets/resign.sh +1 -1
  74. data/sigh/lib/sigh/download_all.rb +16 -4
  75. data/sigh/lib/sigh/options.rb +21 -0
  76. data/sigh/lib/sigh/runner.rb +83 -41
  77. data/snapshot/lib/assets/SnapshotHelper.swift +4 -0
  78. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +2 -1
  79. data/snapshot/lib/snapshot/test_command_generator.rb +1 -1
  80. data/snapshot/lib/snapshot/test_command_generator_base.rb +3 -1
  81. data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +1 -1
  82. data/spaceship/lib/spaceship/client.rb +9 -4
  83. data/spaceship/lib/spaceship/connect_api.rb +27 -0
  84. data/spaceship/lib/spaceship/connect_api/api_client.rb +12 -3
  85. data/spaceship/lib/spaceship/connect_api/client.rb +20 -7
  86. data/spaceship/lib/spaceship/connect_api/models/app.rb +51 -0
  87. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +3 -1
  88. data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +2 -1
  89. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +42 -0
  90. data/spaceship/lib/spaceship/connect_api/models/custom_app_organization.rb +43 -0
  91. data/spaceship/lib/spaceship/connect_api/models/custom_app_user.rb +41 -0
  92. data/spaceship/lib/spaceship/connect_api/models/device.rb +5 -0
  93. data/spaceship/lib/spaceship/connect_api/models/profile.rb +7 -1
  94. data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +59 -0
  95. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +45 -2
  96. data/spaceship/lib/spaceship/connect_api/spaceship.rb +7 -4
  97. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +13 -0
  98. data/spaceship/lib/spaceship/connect_api/token.rb +6 -1
  99. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +71 -0
  100. data/spaceship/lib/spaceship/connect_api/users/users.rb +40 -0
  101. data/supply/lib/supply.rb +1 -1
  102. data/supply/lib/supply/uploader.rb +1 -1
  103. metadata +24 -18
@@ -125,7 +125,7 @@ module Fastlane
125
125
  # Since loading dotenv should respect additional environments passed using
126
126
  # --env, we must extrat the arguments out of ARGV and process them before
127
127
  # calling into commander. This is required since the ENV must be configured
128
- # before running any other commands in order to correclty respect variables
128
+ # before running any other commands in order to correctly respect variables
129
129
  # like FASTLANE_HIDE_CHANGELOG and FASTLANE_DISABLE_COLORS
130
130
  def load_dot_env
131
131
  env_cl_param = lambda do
@@ -259,11 +259,20 @@ module Fastlane
259
259
  return return_value
260
260
  end
261
261
 
262
+ def find_tag(folder: nil, version: nil, remote: false)
263
+ req = Gem::Requirement.new(version)
264
+ all_tags = get_tags(folder: folder, remote: remote)
265
+
266
+ return all_tags.select { |t| req =~ FastlaneCore::TagVersion.new(t) }.last
267
+ end
268
+
262
269
  # @param url [String] The git URL to clone the repository from
263
270
  # @param branch [String] The branch to checkout in the repository
264
271
  # @param path [String] The path to the Fastfile
265
272
  # @param version [String, Array] Version requirement for repo tags
266
- def import_from_git(url: nil, branch: 'HEAD', path: 'fastlane/Fastfile', version: nil, dependencies: [])
273
+ # @param dependencies [Array] An optional array of additional Fastfiles in the repository
274
+ # @param cache_path [String] An optional path to a directory where the repository should be cloned into
275
+ def import_from_git(url: nil, branch: 'HEAD', path: 'fastlane/Fastfile', version: nil, dependencies: [], cache_path: nil) # rubocop:disable Metrics/PerceivedComplexity
267
276
  UI.user_error!("Please pass a path to the `import_from_git` action") if url.to_s.length == 0
268
277
 
269
278
  Actions.execute_action('import_from_git') do
@@ -271,41 +280,75 @@ module Fastlane
271
280
 
272
281
  action_launched('import_from_git')
273
282
 
283
+ is_eligible_for_caching = !version.nil? && !cache_path.nil?
284
+
285
+ UI.message("Eligible for caching") if is_eligible_for_caching
286
+
274
287
  # Checkout the repo
275
288
  repo_name = url.split("/").last
276
289
  checkout_param = branch
277
290
 
278
- Dir.mktmpdir("fl_clone") do |tmp_path|
279
- clone_folder = File.join(tmp_path, repo_name)
291
+ import_block = proc do |target_path|
292
+ clone_folder = File.join(target_path, repo_name)
280
293
 
281
294
  branch_option = "--branch #{branch}" if branch != 'HEAD'
282
295
 
283
296
  checkout_dependencies = dependencies.map(&:shellescape).join(" ")
284
297
 
285
- checkout_path = "#{path.shellescape} #{checkout_dependencies}"
286
-
287
- UI.message("Cloning remote git repo...")
288
- Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
289
- Actions.sh("git clone #{url.shellescape} #{clone_folder.shellescape} --depth 1 -n #{branch_option}")
298
+ # If the current call is eligible for caching, we check out all the
299
+ # files and directories. If not, we only check out the specified
300
+ # `path` and `dependencies`.
301
+ checkout_path = is_eligible_for_caching ? "" : "#{path.shellescape} #{checkout_dependencies}"
302
+
303
+ if Dir[clone_folder].empty?
304
+ UI.message("Cloning remote git repo...")
305
+ Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
306
+ # When using cached clones, we need the entire repository history
307
+ # so we can switch between tags or branches instantly, or else,
308
+ # it would defeat the caching's purpose.
309
+ depth = is_eligible_for_caching ? "" : "--depth 1"
310
+
311
+ Actions.sh("git clone #{url.shellescape} #{clone_folder.shellescape} #{depth} --no-checkout #{branch_option}")
312
+ end
290
313
  end
291
314
 
292
315
  unless version.nil?
293
- req = Gem::Requirement.new(version)
294
- all_tags = fetch_remote_tags(folder: clone_folder)
295
- checkout_param = all_tags.select { |t| req =~ FastlaneCore::TagVersion.new(t) }.last
316
+ if is_eligible_for_caching
317
+ checkout_param = find_tag(folder: clone_folder, version: version, remote: false)
318
+
319
+ if checkout_param.nil?
320
+ # Update the repo and try again before failing
321
+ UI.message("Updating git repo...")
322
+ Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
323
+ Actions.sh("cd #{clone_folder.shellescape} && git checkout #{branch} && git reset --hard && git pull --all")
324
+ end
325
+
326
+ checkout_param = find_tag(folder: clone_folder, version: version, remote: false)
327
+ else
328
+ UI.message("Found tag #{checkout_param}. No git repo update needed.")
329
+ end
330
+ else
331
+ checkout_param = find_tag(folder: clone_folder, version: version, remote: true)
332
+ end
333
+
296
334
  UI.user_error!("No tag found matching #{version.inspect}") if checkout_param.nil?
297
335
  end
298
336
 
299
337
  Actions.sh("cd #{clone_folder.shellescape} && git checkout #{checkout_param.shellescape} #{checkout_path}")
300
338
 
301
- # We also want to check out all the local actions of this fastlane setup
302
- containing = path.split(File::SEPARATOR)[0..-2]
303
- containing = "." if containing.count == 0
304
- actions_folder = File.join(containing, "actions")
305
- begin
306
- Actions.sh("cd #{clone_folder.shellescape} && git checkout #{checkout_param.shellescape} #{actions_folder.shellescape}")
307
- rescue
308
- # We don't care about a failure here, as local actions are optional
339
+ # Knowing that we check out all the files and directories when the
340
+ # current call is eligible for caching, we don't need to also
341
+ # explicitly check out the "actions" directory.
342
+ unless is_eligible_for_caching
343
+ # We also want to check out all the local actions of this fastlane setup
344
+ containing = path.split(File::SEPARATOR)[0..-2]
345
+ containing = "." if containing.count == 0
346
+ actions_folder = File.join(containing, "actions")
347
+ begin
348
+ Actions.sh("cd #{clone_folder.shellescape} && git checkout #{checkout_param.shellescape} #{actions_folder.shellescape}")
349
+ rescue
350
+ # We don't care about a failure here, as local actions are optional
351
+ end
309
352
  end
310
353
 
311
354
  return_value = nil
@@ -320,6 +363,12 @@ module Fastlane
320
363
 
321
364
  return return_value
322
365
  end
366
+
367
+ if is_eligible_for_caching
368
+ import_block.call(File.expand_path(cache_path))
369
+ else
370
+ Dir.mktmpdir("fl_clone", &import_block)
371
+ end
323
372
  end
324
373
  end
325
374
 
@@ -327,10 +376,12 @@ module Fastlane
327
376
  # @!group Versioning helpers
328
377
  #####################################################
329
378
 
330
- def fetch_remote_tags(folder: nil)
331
- UI.message("Fetching remote git tags...")
332
- Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
333
- Actions.sh("cd #{folder.shellescape} && git fetch --all --tags -q")
379
+ def get_tags(folder: nil, remote: false)
380
+ if remote
381
+ UI.message("Fetching remote git tags...")
382
+ Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
383
+ Actions.sh("cd #{folder.shellescape} && git fetch --all --tags -q")
384
+ end
334
385
  end
335
386
 
336
387
  # Fetch all possible tags
@@ -179,6 +179,7 @@ Style/MethodCallWithArgsParentheses:
179
179
  - private_lane
180
180
  - platform
181
181
  - to
182
+ - not_to
182
183
  - describe
183
184
  - it
184
185
  - be
@@ -136,7 +136,7 @@ module Fastlane
136
136
  type = "[String]"
137
137
  elsif default_value.kind_of?(Hash)
138
138
  type = "[String : Any]"
139
- # Altough we can have a default value of Integer type, if param_type_override overridden that value, respect it.
139
+ # Although we can have a default value of Integer type, if param_type_override overridden that value, respect it.
140
140
  elsif default_value.kind_of?(Integer)
141
141
  if type == "Double" || type == "Float"
142
142
  begin
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.161.0'.freeze
2
+ VERSION = '2.166.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.166.0
@@ -53,7 +53,7 @@ public protocol DeliverfileProtocol: class {
53
53
  /// Don’t create or update the app version that is being prepared for submission
54
54
  var skipAppVersionUpdate: Bool { get }
55
55
 
56
- /// Skip the HTML report file verification
56
+ /// Skip verification of HTML preview file
57
57
  var force: Bool { get }
58
58
 
59
59
  /// Clear all previously uploaded screenshots before uploading the new ones
@@ -66,7 +66,7 @@ public protocol DeliverfileProtocol: class {
66
66
  var rejectIfPossible: Bool { get }
67
67
 
68
68
  /// Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
69
- var automaticRelease: Bool { get }
69
+ var automaticRelease: Bool? { get }
70
70
 
71
71
  /// Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
72
72
  var autoReleaseDate: Int? { get }
@@ -211,7 +211,7 @@ public extension DeliverfileProtocol {
211
211
  var overwriteScreenshots: Bool { return false }
212
212
  var submitForReview: Bool { return false }
213
213
  var rejectIfPossible: Bool { return false }
214
- var automaticRelease: Bool { return false }
214
+ var automaticRelease: Bool? { return nil }
215
215
  var autoReleaseDate: Int? { return nil }
216
216
  var phasedRelease: Bool { return false }
217
217
  var resetRatings: Bool { return false }
@@ -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.49]
@@ -98,6 +98,8 @@ public func addGitTag(tag: String? = nil,
98
98
  Returns the current build_number of either live or edit version
99
99
 
100
100
  - parameters:
101
+ - 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)
102
+ - 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)
101
103
  - initialBuildNumber: sets the build number to given value if no build is in current train
102
104
  - appIdentifier: The bundle identifier of your app
103
105
  - username: Your Apple ID Username
@@ -110,7 +112,9 @@ public func addGitTag(tag: String? = nil,
110
112
  Returns the current build number of either the live or testflight version - it is useful for getting the build_number of the current or ready-for-sale app version, and it also works on non-live testflight version.
111
113
  If you need to handle more build-trains please see `latest_testflight_build_number`.
112
114
  */
113
- public func appStoreBuildNumber(initialBuildNumber: Any,
115
+ public func appStoreBuildNumber(apiKeyPath: String? = nil,
116
+ apiKey: [String: Any]? = nil,
117
+ initialBuildNumber: Any,
114
118
  appIdentifier: String,
115
119
  username: String,
116
120
  teamId: Any? = nil,
@@ -119,7 +123,9 @@ public func appStoreBuildNumber(initialBuildNumber: Any,
119
123
  platform: String = "ios",
120
124
  teamName: String? = nil)
121
125
  {
122
- let command = RubyCommand(commandID: "", methodName: "app_store_build_number", className: nil, args: [RubyCommand.Argument(name: "initial_build_number", value: initialBuildNumber),
126
+ let command = RubyCommand(commandID: "", methodName: "app_store_build_number", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
127
+ RubyCommand.Argument(name: "api_key", value: apiKey),
128
+ RubyCommand.Argument(name: "initial_build_number", value: initialBuildNumber),
123
129
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
124
130
  RubyCommand.Argument(name: "username", value: username),
125
131
  RubyCommand.Argument(name: "team_id", value: teamId),
@@ -138,6 +144,7 @@ public func appStoreBuildNumber(initialBuildNumber: Any,
138
144
  - issuerId: The issuer ID
139
145
  - keyFilepath: The path to the key p8 file
140
146
  - keyContent: The content of the key p8 file
147
+ - isKeyContentBase64: Whether :key_content is Base64 encoded or not
141
148
  - duration: The token session duration
142
149
  - inHouse: Is App Store or Enterprise (in house) team? App Store Connect API cannot not determine this on its own (yet)
143
150
 
@@ -147,6 +154,7 @@ public func appStoreConnectApiKey(keyId: String,
147
154
  issuerId: String,
148
155
  keyFilepath: String? = nil,
149
156
  keyContent: String? = nil,
157
+ isKeyContentBase64: Bool = false,
150
158
  duration: Int? = nil,
151
159
  inHouse: Bool? = nil)
152
160
  {
@@ -154,6 +162,7 @@ public func appStoreConnectApiKey(keyId: String,
154
162
  RubyCommand.Argument(name: "issuer_id", value: issuerId),
155
163
  RubyCommand.Argument(name: "key_filepath", value: keyFilepath),
156
164
  RubyCommand.Argument(name: "key_content", value: keyContent),
165
+ RubyCommand.Argument(name: "is_key_content_base64", value: isKeyContentBase64),
157
166
  RubyCommand.Argument(name: "duration", value: duration),
158
167
  RubyCommand.Argument(name: "in_house", value: inHouse)])
159
168
  _ = runner.executeCommand(command)
@@ -479,7 +488,7 @@ public func appledoc(input: Any,
479
488
  - skipScreenshots: Don't upload the screenshots
480
489
  - skipMetadata: Don't upload the metadata (e.g. title, description). This will still upload screenshots
481
490
  - skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
482
- - force: Skip the HTML report file verification
491
+ - force: Skip verification of HTML preview file
483
492
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
484
493
  - submitForReview: Submit the new version for Review after uploading everything
485
494
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
@@ -527,7 +536,7 @@ public func appledoc(input: Any,
527
536
 
528
537
  Using _upload_to_app_store_ after _build_app_ and _capture_screenshots_ will automatically upload the latest ipa and screenshots with no other configuration.
529
538
 
530
- If you don't want a PDF report for App Store builds, use the `:force` option.
539
+ If you don't want to verify an HTML preview for App Store builds, use the `:force` option.
531
540
  This is useful when running _fastlane_ on your Continuous Integration server:
532
541
  `_upload_to_app_store_(force: true)`
533
542
  If your account is on multiple teams and you need to tell the `iTMSTransporter` which 'provider' to use, you can set the `:itc_provider` option to pass this info.
@@ -553,7 +562,7 @@ public func appstore(apiKeyPath: String? = nil,
553
562
  overwriteScreenshots: Bool = false,
554
563
  submitForReview: Bool = false,
555
564
  rejectIfPossible: Bool = false,
556
- automaticRelease: Bool = false,
565
+ automaticRelease: Bool? = nil,
557
566
  autoReleaseDate: Int? = nil,
558
567
  phasedRelease: Bool = false,
559
568
  resetRatings: Bool = false,
@@ -1844,6 +1853,8 @@ public func carthage(command: String = "bootstrap",
1844
1853
  - type: Create specific certificate type (takes precedence over :development)
1845
1854
  - force: Create a certificate even if an existing certificate exists
1846
1855
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
1856
+ - 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)
1857
+ - 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
1858
  - username: Your Apple ID Username
1848
1859
  - teamId: The ID of your Developer Portal team if you're in multiple teams
1849
1860
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -1851,6 +1862,7 @@ public func carthage(command: String = "bootstrap",
1851
1862
  - outputPath: The path to a directory in which all certificates and private keys should be stored
1852
1863
  - keychainPath: Path to a custom keychain
1853
1864
  - 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
1865
+ - 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
1866
  - platform: Set the provisioning profile's platform (ios, macos)
1855
1867
 
1856
1868
  **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 +1872,8 @@ public func cert(development: Bool = false,
1860
1872
  type: String? = nil,
1861
1873
  force: Bool = false,
1862
1874
  generateAppleCerts: Bool = true,
1875
+ apiKeyPath: String? = nil,
1876
+ apiKey: [String: Any]? = nil,
1863
1877
  username: String,
1864
1878
  teamId: String? = nil,
1865
1879
  teamName: String? = nil,
@@ -1867,12 +1881,15 @@ public func cert(development: Bool = false,
1867
1881
  outputPath: String = ".",
1868
1882
  keychainPath: String,
1869
1883
  keychainPassword: String? = nil,
1884
+ skipSetPartitionList: Bool = false,
1870
1885
  platform: String = "ios")
1871
1886
  {
1872
1887
  let command = RubyCommand(commandID: "", methodName: "cert", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
1873
1888
  RubyCommand.Argument(name: "type", value: type),
1874
1889
  RubyCommand.Argument(name: "force", value: force),
1875
1890
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
1891
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
1892
+ RubyCommand.Argument(name: "api_key", value: apiKey),
1876
1893
  RubyCommand.Argument(name: "username", value: username),
1877
1894
  RubyCommand.Argument(name: "team_id", value: teamId),
1878
1895
  RubyCommand.Argument(name: "team_name", value: teamName),
@@ -1880,6 +1897,7 @@ public func cert(development: Bool = false,
1880
1897
  RubyCommand.Argument(name: "output_path", value: outputPath),
1881
1898
  RubyCommand.Argument(name: "keychain_path", value: keychainPath),
1882
1899
  RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
1900
+ RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
1883
1901
  RubyCommand.Argument(name: "platform", value: platform)])
1884
1902
  _ = runner.executeCommand(command)
1885
1903
  }
@@ -2591,7 +2609,7 @@ public func deleteKeychain(name: String? = nil,
2591
2609
  - skipScreenshots: Don't upload the screenshots
2592
2610
  - skipMetadata: Don't upload the metadata (e.g. title, description). This will still upload screenshots
2593
2611
  - skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
2594
- - force: Skip the HTML report file verification
2612
+ - force: Skip verification of HTML preview file
2595
2613
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
2596
2614
  - submitForReview: Submit the new version for Review after uploading everything
2597
2615
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
@@ -2639,7 +2657,7 @@ public func deleteKeychain(name: String? = nil,
2639
2657
 
2640
2658
  Using _upload_to_app_store_ after _build_app_ and _capture_screenshots_ will automatically upload the latest ipa and screenshots with no other configuration.
2641
2659
 
2642
- If you don't want a PDF report for App Store builds, use the `:force` option.
2660
+ If you don't want to verify an HTML preview for App Store builds, use the `:force` option.
2643
2661
  This is useful when running _fastlane_ on your Continuous Integration server:
2644
2662
  `_upload_to_app_store_(force: true)`
2645
2663
  If your account is on multiple teams and you need to tell the `iTMSTransporter` which 'provider' to use, you can set the `:itc_provider` option to pass this info.
@@ -2665,7 +2683,7 @@ public func deliver(apiKeyPath: Any? = deliverfile.apiKeyPath,
2665
2683
  overwriteScreenshots: Bool = deliverfile.overwriteScreenshots,
2666
2684
  submitForReview: Bool = deliverfile.submitForReview,
2667
2685
  rejectIfPossible: Bool = deliverfile.rejectIfPossible,
2668
- automaticRelease: Bool = deliverfile.automaticRelease,
2686
+ automaticRelease: Bool? = deliverfile.automaticRelease,
2669
2687
  autoReleaseDate: Int? = deliverfile.autoReleaseDate,
2670
2688
  phasedRelease: Bool = deliverfile.phasedRelease,
2671
2689
  resetRatings: Bool = deliverfile.resetRatings,
@@ -3323,6 +3341,8 @@ public func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
3323
3341
  - type: Create specific certificate type (takes precedence over :development)
3324
3342
  - force: Create a certificate even if an existing certificate exists
3325
3343
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
3344
+ - 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)
3345
+ - 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
3346
  - username: Your Apple ID Username
3327
3347
  - teamId: The ID of your Developer Portal team if you're in multiple teams
3328
3348
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -3330,6 +3350,7 @@ public func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
3330
3350
  - outputPath: The path to a directory in which all certificates and private keys should be stored
3331
3351
  - keychainPath: Path to a custom keychain
3332
3352
  - 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
3353
+ - 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
3354
  - platform: Set the provisioning profile's platform (ios, macos)
3334
3355
 
3335
3356
  **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 +3360,8 @@ public func getCertificates(development: Bool = false,
3339
3360
  type: String? = nil,
3340
3361
  force: Bool = false,
3341
3362
  generateAppleCerts: Bool = true,
3363
+ apiKeyPath: String? = nil,
3364
+ apiKey: [String: Any]? = nil,
3342
3365
  username: String,
3343
3366
  teamId: String? = nil,
3344
3367
  teamName: String? = nil,
@@ -3346,12 +3369,15 @@ public func getCertificates(development: Bool = false,
3346
3369
  outputPath: String = ".",
3347
3370
  keychainPath: String,
3348
3371
  keychainPassword: String? = nil,
3372
+ skipSetPartitionList: Bool = false,
3349
3373
  platform: String = "ios")
3350
3374
  {
3351
3375
  let command = RubyCommand(commandID: "", methodName: "get_certificates", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
3352
3376
  RubyCommand.Argument(name: "type", value: type),
3353
3377
  RubyCommand.Argument(name: "force", value: force),
3354
3378
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
3379
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
3380
+ RubyCommand.Argument(name: "api_key", value: apiKey),
3355
3381
  RubyCommand.Argument(name: "username", value: username),
3356
3382
  RubyCommand.Argument(name: "team_id", value: teamId),
3357
3383
  RubyCommand.Argument(name: "team_name", value: teamName),
@@ -3359,6 +3385,7 @@ public func getCertificates(development: Bool = false,
3359
3385
  RubyCommand.Argument(name: "output_path", value: outputPath),
3360
3386
  RubyCommand.Argument(name: "keychain_path", value: keychainPath),
3361
3387
  RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
3388
+ RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
3362
3389
  RubyCommand.Argument(name: "platform", value: platform)])
3363
3390
  _ = runner.executeCommand(command)
3364
3391
  }
@@ -3495,6 +3522,8 @@ public func getManagedPlayStorePublishingRights(jsonKey: String? = nil,
3495
3522
  - skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
3496
3523
  - force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
3497
3524
  - appIdentifier: The bundle identifier of your app
3525
+ - 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)
3526
+ - 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
3527
  - username: Your Apple ID Username
3499
3528
  - teamId: The ID of your Developer Portal team if you're in multiple teams
3500
3529
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -3521,6 +3550,8 @@ public func getProvisioningProfile(adhoc: Bool = false,
3521
3550
  skipInstall: Bool = false,
3522
3551
  force: Bool = false,
3523
3552
  appIdentifier: String,
3553
+ apiKeyPath: String? = nil,
3554
+ apiKey: [String: Any]? = nil,
3524
3555
  username: String,
3525
3556
  teamId: String? = nil,
3526
3557
  teamName: String? = nil,
@@ -3543,6 +3574,8 @@ public func getProvisioningProfile(adhoc: Bool = false,
3543
3574
  RubyCommand.Argument(name: "skip_install", value: skipInstall),
3544
3575
  RubyCommand.Argument(name: "force", value: force),
3545
3576
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
3577
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
3578
+ RubyCommand.Argument(name: "api_key", value: apiKey),
3546
3579
  RubyCommand.Argument(name: "username", value: username),
3547
3580
  RubyCommand.Argument(name: "team_id", value: teamId),
3548
3581
  RubyCommand.Argument(name: "team_name", value: teamName),
@@ -4571,6 +4604,8 @@ public func jira(url: String,
4571
4604
  Fetches most recent build number from TestFlight
4572
4605
 
4573
4606
  - parameters:
4607
+ - 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)
4608
+ - 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)
4574
4609
  - live: Query the live version (ready-for-sale)
4575
4610
  - appIdentifier: The bundle identifier of your app
4576
4611
  - username: Your Apple ID Username
@@ -4585,7 +4620,9 @@ public func jira(url: String,
4585
4620
  Provides a way to have `increment_build_number` be based on the latest build you uploaded to iTC.
4586
4621
  Fetches the most recent build number from TestFlight based on the version number. Provides a way to have `increment_build_number` be based on the latest build you uploaded to iTC.
4587
4622
  */
4588
- @discardableResult public func latestTestflightBuildNumber(live: Bool = false,
4623
+ @discardableResult public func latestTestflightBuildNumber(apiKeyPath: String? = nil,
4624
+ apiKey: [String: Any]? = nil,
4625
+ live: Bool = false,
4589
4626
  appIdentifier: String,
4590
4627
  username: String,
4591
4628
  version: String? = nil,
@@ -4594,7 +4631,9 @@ public func jira(url: String,
4594
4631
  teamId: Any? = nil,
4595
4632
  teamName: String? = nil) -> Int
4596
4633
  {
4597
- let command = RubyCommand(commandID: "", methodName: "latest_testflight_build_number", className: nil, args: [RubyCommand.Argument(name: "live", value: live),
4634
+ let command = RubyCommand(commandID: "", methodName: "latest_testflight_build_number", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
4635
+ RubyCommand.Argument(name: "api_key", value: apiKey),
4636
+ RubyCommand.Argument(name: "live", value: live),
4598
4637
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
4599
4638
  RubyCommand.Argument(name: "username", value: username),
4600
4639
  RubyCommand.Argument(name: "version", value: version),
@@ -4709,7 +4748,9 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
4709
4748
  - readonly: Only fetch existing certificates and profiles, don't generate new ones
4710
4749
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
4711
4750
  - skipProvisioningProfiles: Skip syncing provisioning profiles
4712
- - appIdentifier: The bundle identifier(s) of your app (comma-separated)
4751
+ - appIdentifier: The bundle identifier(s) of your app (comma-separated string or array of strings)
4752
+ - 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)
4753
+ - 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
4754
  - username: Your Apple ID Username
4714
4755
  - teamId: The ID of your Developer Portal team if you're in multiple teams
4715
4756
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -4742,7 +4783,9 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
4742
4783
  - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
4743
4784
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
4744
4785
  - 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
4786
+ - skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
4745
4787
  - outputPath: Path in which to export certificates, key and profile
4788
+ - 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
4789
  - verbose: Print out extra information and all commands
4747
4790
 
4748
4791
  More information: https://docs.fastlane.tools/actions/match/
@@ -4753,7 +4796,9 @@ public func match(type: Any = matchfile.type,
4753
4796
  generateAppleCerts: Bool = matchfile.generateAppleCerts,
4754
4797
  skipProvisioningProfiles: Bool = matchfile.skipProvisioningProfiles,
4755
4798
  appIdentifier: [String] = matchfile.appIdentifier,
4756
- username: Any = matchfile.username,
4799
+ apiKeyPath: Any? = matchfile.apiKeyPath,
4800
+ apiKey: [String: Any]? = matchfile.apiKey,
4801
+ username: Any? = matchfile.username,
4757
4802
  teamId: Any? = matchfile.teamId,
4758
4803
  teamName: Any? = matchfile.teamName,
4759
4804
  storageMode: Any = matchfile.storageMode,
@@ -4785,7 +4830,9 @@ public func match(type: Any = matchfile.type,
4785
4830
  templateName: Any? = matchfile.templateName,
4786
4831
  profileName: Any? = matchfile.profileName,
4787
4832
  failOnNameTaken: Bool = matchfile.failOnNameTaken,
4833
+ skipCertificateMatching: Bool = matchfile.skipCertificateMatching,
4788
4834
  outputPath: Any? = matchfile.outputPath,
4835
+ skipSetPartitionList: Bool = matchfile.skipSetPartitionList,
4789
4836
  verbose: Bool = matchfile.verbose)
4790
4837
  {
4791
4838
  let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
@@ -4794,6 +4841,8 @@ public func match(type: Any = matchfile.type,
4794
4841
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
4795
4842
  RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
4796
4843
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
4844
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
4845
+ RubyCommand.Argument(name: "api_key", value: apiKey),
4797
4846
  RubyCommand.Argument(name: "username", value: username),
4798
4847
  RubyCommand.Argument(name: "team_id", value: teamId),
4799
4848
  RubyCommand.Argument(name: "team_name", value: teamName),
@@ -4826,7 +4875,9 @@ public func match(type: Any = matchfile.type,
4826
4875
  RubyCommand.Argument(name: "template_name", value: templateName),
4827
4876
  RubyCommand.Argument(name: "profile_name", value: profileName),
4828
4877
  RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
4878
+ RubyCommand.Argument(name: "skip_certificate_matching", value: skipCertificateMatching),
4829
4879
  RubyCommand.Argument(name: "output_path", value: outputPath),
4880
+ RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
4830
4881
  RubyCommand.Argument(name: "verbose", value: verbose)])
4831
4882
  _ = runner.executeCommand(command)
4832
4883
  }
@@ -5739,7 +5790,10 @@ public func recreateSchemes(project: String) {
5739
5790
 
5740
5791
  - parameters:
5741
5792
  - name: Provide the name of the device to register as
5793
+ - platform: Provide the platform of the device to register as (ios, mac)
5742
5794
  - udid: Provide the UDID of the device to register as
5795
+ - 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)
5796
+ - 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)
5743
5797
  - teamId: The ID of your Developer Portal team if you're in multiple teams
5744
5798
  - teamName: The name of your Developer Portal team if you're in multiple teams
5745
5799
  - username: Optional: Your Apple ID
@@ -5749,13 +5803,19 @@ public func recreateSchemes(project: String) {
5749
5803
  The action will connect to the Apple Developer Portal using the username you specified in your `Appfile` with `apple_id`, but you can override it using the `:username` option.
5750
5804
  */
5751
5805
  @discardableResult public func registerDevice(name: String,
5806
+ platform: String = "ios",
5752
5807
  udid: String,
5808
+ apiKeyPath: String? = nil,
5809
+ apiKey: [String: Any]? = nil,
5753
5810
  teamId: String? = nil,
5754
5811
  teamName: String? = nil,
5755
- username: String) -> String
5812
+ username: String? = nil) -> String
5756
5813
  {
5757
5814
  let command = RubyCommand(commandID: "", methodName: "register_device", className: nil, args: [RubyCommand.Argument(name: "name", value: name),
5815
+ RubyCommand.Argument(name: "platform", value: platform),
5758
5816
  RubyCommand.Argument(name: "udid", value: udid),
5817
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
5818
+ RubyCommand.Argument(name: "api_key", value: apiKey),
5759
5819
  RubyCommand.Argument(name: "team_id", value: teamId),
5760
5820
  RubyCommand.Argument(name: "team_name", value: teamName),
5761
5821
  RubyCommand.Argument(name: "username", value: username)])
@@ -5768,6 +5828,8 @@ public func recreateSchemes(project: String) {
5768
5828
  - parameters:
5769
5829
  - devices: A hash of devices, with the name as key and the UDID as value
5770
5830
  - devicesFile: Provide a path to a file with the devices to register. For the format of the file see the examples
5831
+ - 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)
5832
+ - 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)
5771
5833
  - teamId: The ID of your Developer Portal team if you're in multiple teams
5772
5834
  - teamName: The name of your Developer Portal team if you're in multiple teams
5773
5835
  - username: Optional: Your Apple ID
@@ -5779,6 +5841,8 @@ public func recreateSchemes(project: String) {
5779
5841
  */
5780
5842
  public func registerDevices(devices: [String: Any]? = nil,
5781
5843
  devicesFile: String? = nil,
5844
+ apiKeyPath: String? = nil,
5845
+ apiKey: [String: Any]? = nil,
5782
5846
  teamId: String? = nil,
5783
5847
  teamName: String? = nil,
5784
5848
  username: String,
@@ -5786,6 +5850,8 @@ public func registerDevices(devices: [String: Any]? = nil,
5786
5850
  {
5787
5851
  let command = RubyCommand(commandID: "", methodName: "register_devices", className: nil, args: [RubyCommand.Argument(name: "devices", value: devices),
5788
5852
  RubyCommand.Argument(name: "devices_file", value: devicesFile),
5853
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
5854
+ RubyCommand.Argument(name: "api_key", value: apiKey),
5789
5855
  RubyCommand.Argument(name: "team_id", value: teamId),
5790
5856
  RubyCommand.Argument(name: "team_name", value: teamName),
5791
5857
  RubyCommand.Argument(name: "username", value: username),
@@ -6011,6 +6077,7 @@ public func rubyVersion() {
6011
6077
  - skipSlack: Don't publish to slack, even when an URL is given
6012
6078
  - slackOnlyOnFailure: Only post on Slack if the tests fail
6013
6079
  - destination: Use only if you're a pro, use the other options instead
6080
+ - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
6014
6081
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
6015
6082
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
6016
6083
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
@@ -6077,6 +6144,7 @@ public func runTests(workspace: String? = nil,
6077
6144
  skipSlack: Bool = false,
6078
6145
  slackOnlyOnFailure: Bool = false,
6079
6146
  destination: Any? = nil,
6147
+ catalystPlatform: String? = nil,
6080
6148
  customReportFileName: String? = nil,
6081
6149
  xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
6082
6150
  clonedSourcePackagesPath: String? = nil,
@@ -6141,6 +6209,7 @@ public func runTests(workspace: String? = nil,
6141
6209
  RubyCommand.Argument(name: "skip_slack", value: skipSlack),
6142
6210
  RubyCommand.Argument(name: "slack_only_on_failure", value: slackOnlyOnFailure),
6143
6211
  RubyCommand.Argument(name: "destination", value: destination),
6212
+ RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
6144
6213
  RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
6145
6214
  RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
6146
6215
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
@@ -6287,6 +6356,7 @@ public func say(text: Any,
6287
6356
  - skipSlack: Don't publish to slack, even when an URL is given
6288
6357
  - slackOnlyOnFailure: Only post on Slack if the tests fail
6289
6358
  - destination: Use only if you're a pro, use the other options instead
6359
+ - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
6290
6360
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
6291
6361
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
6292
6362
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
@@ -6353,6 +6423,7 @@ public func scan(workspace: Any? = scanfile.workspace,
6353
6423
  skipSlack: Bool = scanfile.skipSlack,
6354
6424
  slackOnlyOnFailure: Bool = scanfile.slackOnlyOnFailure,
6355
6425
  destination: Any? = scanfile.destination,
6426
+ catalystPlatform: Any? = scanfile.catalystPlatform,
6356
6427
  customReportFileName: Any? = scanfile.customReportFileName,
6357
6428
  xcodebuildCommand: Any = scanfile.xcodebuildCommand,
6358
6429
  clonedSourcePackagesPath: Any? = scanfile.clonedSourcePackagesPath,
@@ -6417,6 +6488,7 @@ public func scan(workspace: Any? = scanfile.workspace,
6417
6488
  RubyCommand.Argument(name: "skip_slack", value: skipSlack),
6418
6489
  RubyCommand.Argument(name: "slack_only_on_failure", value: slackOnlyOnFailure),
6419
6490
  RubyCommand.Argument(name: "destination", value: destination),
6491
+ RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
6420
6492
  RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
6421
6493
  RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
6422
6494
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
@@ -6549,6 +6621,8 @@ public func setBuildNumberRepository(useHgRevisionNumber: Bool = false,
6549
6621
  Set the changelog for all languages on App Store Connect
6550
6622
 
6551
6623
  - parameters:
6624
+ - 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)
6625
+ - 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)
6552
6626
  - appIdentifier: The bundle identifier of your app
6553
6627
  - username: Your Apple ID Username
6554
6628
  - version: The version number to create/update
@@ -6561,15 +6635,19 @@ public func setBuildNumberRepository(useHgRevisionNumber: Bool = false,
6561
6635
  You can store the changelog in `./changelog.txt` and it will automatically get loaded from there. This integration is useful if you support e.g. 10 languages and want to use the same "What's new"-text for all languages.
6562
6636
  Defining the version is optional. _fastlane_ will try to automatically detect it if you don't provide one.
6563
6637
  */
6564
- public func setChangelog(appIdentifier: String,
6565
- username: String,
6638
+ public func setChangelog(apiKeyPath: String? = nil,
6639
+ apiKey: [String: Any]? = nil,
6640
+ appIdentifier: String,
6641
+ username: String? = nil,
6566
6642
  version: String? = nil,
6567
6643
  changelog: String? = nil,
6568
6644
  teamId: Any? = nil,
6569
6645
  teamName: String? = nil,
6570
6646
  platform: String = "ios")
6571
6647
  {
6572
- let command = RubyCommand(commandID: "", methodName: "set_changelog", className: nil, args: [RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
6648
+ let command = RubyCommand(commandID: "", methodName: "set_changelog", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
6649
+ RubyCommand.Argument(name: "api_key", value: apiKey),
6650
+ RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
6573
6651
  RubyCommand.Argument(name: "username", value: username),
6574
6652
  RubyCommand.Argument(name: "version", value: version),
6575
6653
  RubyCommand.Argument(name: "changelog", value: changelog),
@@ -6811,6 +6889,8 @@ public func setupTravis(force: Bool = false) {
6811
6889
  - skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
6812
6890
  - force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
6813
6891
  - appIdentifier: The bundle identifier of your app
6892
+ - 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)
6893
+ - 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
6894
  - username: Your Apple ID Username
6815
6895
  - teamId: The ID of your Developer Portal team if you're in multiple teams
6816
6896
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -6837,6 +6917,8 @@ public func sigh(adhoc: Bool = false,
6837
6917
  skipInstall: Bool = false,
6838
6918
  force: Bool = false,
6839
6919
  appIdentifier: String,
6920
+ apiKeyPath: String? = nil,
6921
+ apiKey: [String: Any]? = nil,
6840
6922
  username: String,
6841
6923
  teamId: String? = nil,
6842
6924
  teamName: String? = nil,
@@ -6859,6 +6941,8 @@ public func sigh(adhoc: Bool = false,
6859
6941
  RubyCommand.Argument(name: "skip_install", value: skipInstall),
6860
6942
  RubyCommand.Argument(name: "force", value: force),
6861
6943
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
6944
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
6945
+ RubyCommand.Argument(name: "api_key", value: apiKey),
6862
6946
  RubyCommand.Argument(name: "username", value: username),
6863
6947
  RubyCommand.Argument(name: "team_id", value: teamId),
6864
6948
  RubyCommand.Argument(name: "team_name", value: teamName),
@@ -7600,7 +7684,9 @@ public func swiftlint(mode: Any = "lint",
7600
7684
  - readonly: Only fetch existing certificates and profiles, don't generate new ones
7601
7685
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
7602
7686
  - skipProvisioningProfiles: Skip syncing provisioning profiles
7603
- - appIdentifier: The bundle identifier(s) of your app (comma-separated)
7687
+ - appIdentifier: The bundle identifier(s) of your app (comma-separated string or array of strings)
7688
+ - 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)
7689
+ - 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
7690
  - username: Your Apple ID Username
7605
7691
  - teamId: The ID of your Developer Portal team if you're in multiple teams
7606
7692
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -7633,7 +7719,9 @@ public func swiftlint(mode: Any = "lint",
7633
7719
  - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
7634
7720
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
7635
7721
  - 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
7722
+ - skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
7636
7723
  - outputPath: Path in which to export certificates, key and profile
7724
+ - 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
7725
  - verbose: Print out extra information and all commands
7638
7726
 
7639
7727
  More information: https://docs.fastlane.tools/actions/match/
@@ -7644,7 +7732,9 @@ public func syncCodeSigning(type: String = "development",
7644
7732
  generateAppleCerts: Bool = true,
7645
7733
  skipProvisioningProfiles: Bool = false,
7646
7734
  appIdentifier: [String],
7647
- username: String,
7735
+ apiKeyPath: String? = nil,
7736
+ apiKey: [String: Any]? = nil,
7737
+ username: String? = nil,
7648
7738
  teamId: String? = nil,
7649
7739
  teamName: String? = nil,
7650
7740
  storageMode: String = "git",
@@ -7676,7 +7766,9 @@ public func syncCodeSigning(type: String = "development",
7676
7766
  templateName: String? = nil,
7677
7767
  profileName: String? = nil,
7678
7768
  failOnNameTaken: Bool = false,
7769
+ skipCertificateMatching: Bool = false,
7679
7770
  outputPath: String? = nil,
7771
+ skipSetPartitionList: Bool = false,
7680
7772
  verbose: Bool = false)
7681
7773
  {
7682
7774
  let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
@@ -7685,6 +7777,8 @@ public func syncCodeSigning(type: String = "development",
7685
7777
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
7686
7778
  RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
7687
7779
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
7780
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
7781
+ RubyCommand.Argument(name: "api_key", value: apiKey),
7688
7782
  RubyCommand.Argument(name: "username", value: username),
7689
7783
  RubyCommand.Argument(name: "team_id", value: teamId),
7690
7784
  RubyCommand.Argument(name: "team_name", value: teamName),
@@ -7717,7 +7811,9 @@ public func syncCodeSigning(type: String = "development",
7717
7811
  RubyCommand.Argument(name: "template_name", value: templateName),
7718
7812
  RubyCommand.Argument(name: "profile_name", value: profileName),
7719
7813
  RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
7814
+ RubyCommand.Argument(name: "skip_certificate_matching", value: skipCertificateMatching),
7720
7815
  RubyCommand.Argument(name: "output_path", value: outputPath),
7816
+ RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
7721
7817
  RubyCommand.Argument(name: "verbose", value: verbose)])
7722
7818
  _ = runner.executeCommand(command)
7723
7819
  }
@@ -8403,7 +8499,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
8403
8499
  - skipScreenshots: Don't upload the screenshots
8404
8500
  - skipMetadata: Don't upload the metadata (e.g. title, description). This will still upload screenshots
8405
8501
  - skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
8406
- - force: Skip the HTML report file verification
8502
+ - force: Skip verification of HTML preview file
8407
8503
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
8408
8504
  - submitForReview: Submit the new version for Review after uploading everything
8409
8505
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
@@ -8451,7 +8547,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
8451
8547
 
8452
8548
  Using _upload_to_app_store_ after _build_app_ and _capture_screenshots_ will automatically upload the latest ipa and screenshots with no other configuration.
8453
8549
 
8454
- If you don't want a PDF report for App Store builds, use the `:force` option.
8550
+ If you don't want to verify an HTML preview for App Store builds, use the `:force` option.
8455
8551
  This is useful when running _fastlane_ on your Continuous Integration server:
8456
8552
  `_upload_to_app_store_(force: true)`
8457
8553
  If your account is on multiple teams and you need to tell the `iTMSTransporter` which 'provider' to use, you can set the `:itc_provider` option to pass this info.
@@ -8477,7 +8573,7 @@ public func uploadToAppStore(apiKeyPath: String? = nil,
8477
8573
  overwriteScreenshots: Bool = false,
8478
8574
  submitForReview: Bool = false,
8479
8575
  rejectIfPossible: Bool = false,
8480
- automaticRelease: Bool = false,
8576
+ automaticRelease: Bool? = nil,
8481
8577
  autoReleaseDate: Int? = nil,
8482
8578
  phasedRelease: Bool = false,
8483
8579
  resetRatings: Bool = false,
@@ -9163,7 +9259,7 @@ public func xcov(workspace: String? = nil,
9163
9259
  coverallsServiceJobId: String? = nil,
9164
9260
  coverallsRepoToken: String? = nil,
9165
9261
  xcconfig: String? = nil,
9166
- ideFoundationPath: String = "/Applications/Xcode-11.5.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
9262
+ ideFoundationPath: String = "/Applications/Xcode-12.0.1.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
9167
9263
  legacySupport: Bool = false)
9168
9264
  {
9169
9265
  let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
@@ -9309,4 +9405,4 @@ public let snapshotfile = Snapshotfile()
9309
9405
 
9310
9406
  // Please don't remove the lines below
9311
9407
  // They are used to detect outdated files
9312
- // FastlaneRunnerAPIVersion [0.9.97]
9408
+ // FastlaneRunnerAPIVersion [0.9.102]