fastlane 2.151.2 → 2.155.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +82 -82
  3. data/deliver/lib/deliver/app_screenshot.rb +1 -1
  4. data/deliver/lib/deliver/commands_generator.rb +7 -4
  5. data/deliver/lib/deliver/detect_values.rb +9 -3
  6. data/deliver/lib/deliver/download_screenshots.rb +1 -3
  7. data/deliver/lib/deliver/html_generator.rb +8 -1
  8. data/deliver/lib/deliver/options.rb +1 -1
  9. data/deliver/lib/deliver/runner.rb +5 -10
  10. data/deliver/lib/deliver/setup.rb +92 -3
  11. data/deliver/lib/deliver/submit_for_review.rb +4 -6
  12. data/deliver/lib/deliver/upload_metadata.rb +51 -30
  13. data/deliver/lib/deliver/upload_price_tier.rb +1 -3
  14. data/deliver/lib/deliver/upload_screenshots.rb +75 -44
  15. data/fastlane/lib/fastlane/{helper/.s3_client_helper.rb.swp → .erb_template_helper.rb.swp} +0 -0
  16. data/{deliver/lib/deliver/.commands_generator.rb.swp → fastlane/lib/fastlane/actions/.git_commit.rb.swp} +0 -0
  17. data/fastlane/lib/fastlane/actions/carthage.rb +7 -0
  18. data/fastlane/lib/fastlane/actions/create_keychain.rb +5 -1
  19. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +3 -1
  20. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +21 -2
  21. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +4 -4
  22. data/fastlane/lib/fastlane/actions/download_dsyms.rb +4 -2
  23. data/fastlane/lib/fastlane/actions/erb.rb +10 -2
  24. data/fastlane/lib/fastlane/actions/git_branch.rb +4 -1
  25. data/fastlane/lib/fastlane/actions/git_pull.rb +13 -2
  26. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +5 -0
  27. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +11 -3
  28. data/fastlane/lib/fastlane/runner.rb +3 -1
  29. data/fastlane/lib/fastlane/version.rb +1 -1
  30. data/fastlane/swift/Deliverfile.swift +1 -1
  31. data/fastlane/swift/DeliverfileProtocol.swift +3 -3
  32. data/fastlane/swift/Fastlane.swift +419 -192
  33. data/fastlane/swift/Gymfile.swift +1 -1
  34. data/fastlane/swift/GymfileProtocol.swift +1 -1
  35. data/fastlane/swift/Matchfile.swift +1 -1
  36. data/fastlane/swift/MatchfileProtocol.swift +10 -2
  37. data/fastlane/swift/Precheckfile.swift +1 -1
  38. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  39. data/fastlane/swift/Scanfile.swift +1 -1
  40. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  41. data/fastlane/swift/Screengrabfile.swift +1 -1
  42. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  43. data/fastlane/swift/Snapshotfile.swift +1 -1
  44. data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
  45. data/fastlane_core/lib/fastlane_core/device_manager.rb +25 -6
  46. data/frameit/lib/frameit/editor.rb +11 -6
  47. data/gym/lib/gym/detect_values.rb +6 -3
  48. data/gym/lib/gym/module.rb +30 -0
  49. data/gym/lib/gym/runner.rb +23 -18
  50. data/match/lib/match/generator.rb +6 -0
  51. data/match/lib/match/options.rb +16 -4
  52. data/match/lib/match/runner.rb +13 -5
  53. data/match/lib/match/spaceship_ensure.rb +7 -9
  54. data/match/lib/match/storage/git_storage.rb +16 -2
  55. data/match/lib/match/storage/google_cloud_storage.rb +1 -1
  56. data/pilot/lib/pilot/build_manager.rb +9 -0
  57. data/pilot/lib/pilot/options.rb +7 -1
  58. data/scan/lib/scan/runner.rb +19 -6
  59. data/sigh/lib/sigh/download_all.rb +42 -27
  60. data/sigh/lib/sigh/module.rb +26 -0
  61. data/sigh/lib/sigh/options.rb +2 -2
  62. data/sigh/lib/sigh/runner.rb +74 -33
  63. data/snapshot/lib/snapshot/options.rb +10 -0
  64. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
  65. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -0
  66. data/snapshot/lib/snapshot/test_command_generator.rb +3 -2
  67. data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +4 -1
  68. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  69. data/spaceship/lib/spaceship/connect_api/client.rb +5 -3
  70. data/spaceship/lib/spaceship/connect_api/model.rb +15 -1
  71. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +1 -0
  72. data/spaceship/lib/spaceship/connect_api/models/app.rb +61 -3
  73. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +1 -0
  74. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +1 -0
  75. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +44 -5
  76. data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +1 -0
  77. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +12 -0
  78. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +1 -0
  79. data/spaceship/lib/spaceship/connect_api/models/app_store_version_release_request.rb +12 -0
  80. data/spaceship/lib/spaceship/connect_api/models/build.rb +1 -0
  81. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +17 -5
  82. data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +41 -7
  83. data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +1 -0
  84. data/spaceship/lib/spaceship/connect_api/models/profile.rb +31 -1
  85. data/spaceship/lib/spaceship/connect_api/provisioning/client.rb +46 -4
  86. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +41 -0
  87. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +32 -1
  88. data/supply/lib/supply/client.rb +2 -1
  89. data/supply/lib/supply/options.rb +8 -1
  90. metadata +34 -61
  91. data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
  92. data/frameit/lib/frameit/.editor.rb.swp +0 -0
@@ -22,7 +22,7 @@ module Fastlane
22
22
 
23
23
  # Process options
24
24
  version = params[:version]
25
- build_number = params[:build_number]
25
+ build_number = params[:build_number].to_s unless params[:build_number].nil?
26
26
  platform = params[:platform]
27
27
  output_directory = params[:output_directory]
28
28
  wait_for_dsym_processing = params[:wait_for_dsym_processing]
@@ -258,7 +258,8 @@ module Fastlane
258
258
  short_option: "-b",
259
259
  env_name: "DOWNLOAD_DSYMS_BUILD_NUMBER",
260
260
  description: "The app build_number for dSYMs you wish to download",
261
- optional: true),
261
+ optional: true,
262
+ is_string: false),
262
263
  FastlaneCore::ConfigItem.new(key: :min_version,
263
264
  short_option: "-m",
264
265
  env_name: "DOWNLOAD_DSYMS_MIN_VERSION",
@@ -308,6 +309,7 @@ module Fastlane
308
309
  [
309
310
  'download_dsyms',
310
311
  'download_dsyms(version: "1.0.0", build_number: "345")',
312
+ 'download_dsyms(version: "1.0.1", build_number: 42)',
311
313
  'download_dsyms(version: "live")',
312
314
  'download_dsyms(min_version: "1.2.3")'
313
315
  ]
@@ -3,7 +3,10 @@ module Fastlane
3
3
  class ErbAction < Action
4
4
  def self.run(params)
5
5
  template = File.read(params[:template])
6
- result = ERB.new(template).result(OpenStruct.new(params[:placeholders]).instance_eval { binding })
6
+ trim_mode = params[:trim_mode]
7
+
8
+ result = Fastlane::ErbTemplateHelper.render(template, params[:placeholders], trim_mode)
9
+
7
10
  File.open(params[:destination], 'w') { |file| file.write(result) } if params[:destination]
8
11
  UI.message("Successfully parsed template: '#{params[:template]}' and rendered output to: #{params[:destination]}") if params[:destination]
9
12
  result
@@ -45,7 +48,12 @@ module Fastlane
45
48
  description: "Placeholders given as a hash",
46
49
  default_value: {},
47
50
  is_string: false,
48
- type: Hash)
51
+ type: Hash),
52
+ FastlaneCore::ConfigItem.new(key: :trim_mode,
53
+ short_option: "-t",
54
+ env_name: "FL_ERB_TRIM_MODE",
55
+ description: "Trim mode applied to the ERB",
56
+ optional: true)
49
57
 
50
58
  ]
51
59
  end
@@ -1,7 +1,10 @@
1
1
  module Fastlane
2
2
  module Actions
3
3
  module SharedValues
4
- GIT_BRANCH_ENV_VARS = %w(GIT_BRANCH BRANCH_NAME TRAVIS_BRANCH BITRISE_GIT_BRANCH CI_BUILD_REF_NAME CI_COMMIT_REF_NAME WERCKER_GIT_BRANCH BUILDKITE_BRANCH APPCENTER_BRANCH).freeze
4
+ GIT_BRANCH_ENV_VARS = %w(GIT_BRANCH BRANCH_NAME TRAVIS_BRANCH BITRISE_GIT_BRANCH CI_BUILD_REF_NAME CI_COMMIT_REF_NAME WERCKER_GIT_BRANCH BUILDKITE_BRANCH APPCENTER_BRANCH CIRCLE_BRANCH).reject do |branch|
5
+ # Removing because tests break on CircleCI
6
+ Helper.test? && branch == "CIRCLE_BRANCH"
7
+ end.freeze
5
8
  end
6
9
 
7
10
  class GitBranchAction < Action
@@ -5,7 +5,9 @@ module Fastlane
5
5
  commands = []
6
6
 
7
7
  unless params[:only_tags]
8
- commands += ["git pull &&"]
8
+ command = "git pull"
9
+ command << " --rebase" if params[:rebase]
10
+ commands += ["#{command} &&"]
9
11
  end
10
12
 
11
13
  commands += ["git fetch --tags"]
@@ -26,6 +28,14 @@ module Fastlane
26
28
  default_value: false,
27
29
  verify_block: proc do |value|
28
30
  UI.user_error!("Please pass a valid value for only_tags. Use one of the following: true, false") unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
31
+ end),
32
+ FastlaneCore::ConfigItem.new(key: :rebase,
33
+ description: "Rebase on top of the remote branch instead of merge",
34
+ is_string: false,
35
+ optional: true,
36
+ default_value: false,
37
+ verify_block: proc do |value|
38
+ UI.user_error!("Please pass a valid value for rebase. Use one of the following: true, false") unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
29
39
  end)
30
40
  ]
31
41
  end
@@ -41,7 +51,8 @@ module Fastlane
41
51
  def self.example_code
42
52
  [
43
53
  'git_pull',
44
- 'git_pull(only_tags: true) # only the tags, no commits'
54
+ 'git_pull(only_tags: true) # only the tags, no commits',
55
+ 'git_pull(rebase: true) # use --rebase with pull'
45
56
  ]
46
57
  end
47
58
 
@@ -45,6 +45,11 @@ module Fastlane
45
45
  env_variable_name = Match::Utils.environment_variable_name_profile_name(app_identifier: app_identifier,
46
46
  type: Match.profile_type_sym(params[:type]),
47
47
  platform: params[:platform])
48
+
49
+ if params[:derive_catalyst_app_identifier]
50
+ app_identifier = "maccatalyst.#{app_identifier}"
51
+ end
52
+
48
53
  mapping[app_identifier] = ENV[env_variable_name]
49
54
  end
50
55
 
@@ -5,15 +5,23 @@ module Fastlane
5
5
  require 'pilot'
6
6
  require 'pilot/options'
7
7
 
8
+ distribute_only = values[:distribute_only]
9
+
8
10
  changelog = Actions.lane_context[SharedValues::FL_CHANGELOG]
9
11
  values[:changelog] ||= changelog if changelog
10
12
 
11
- values[:ipa] ||= Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
12
- values[:ipa] = File.expand_path(values[:ipa]) if values[:ipa]
13
+ unless distribute_only
14
+ values[:ipa] ||= Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
15
+ values[:ipa] = File.expand_path(values[:ipa]) if values[:ipa]
16
+ end
13
17
 
14
18
  return values if Helper.test?
15
19
 
16
- Pilot::BuildManager.new.upload(values) # we already have the finished config
20
+ if distribute_only
21
+ Pilot::BuildManager.new.distribute(values) # we already have the finished config
22
+ else
23
+ Pilot::BuildManager.new.upload(values) # we already have the finished config
24
+ end
17
25
  end
18
26
 
19
27
  #####################################################
@@ -216,7 +216,9 @@ module Fastlane
216
216
  end
217
217
 
218
218
  def execute_action(method_sym, class_ref, arguments, custom_dir: nil, from_action: false)
219
- if custom_dir.nil?
219
+ if from_action == true
220
+ custom_dir = "." # We preserve the directory from where the previous action was called from
221
+ elsif custom_dir.nil?
220
222
  custom_dir ||= "." if Helper.test?
221
223
  custom_dir ||= ".."
222
224
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.151.2'.freeze
2
+ VERSION = '2.155.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
@@ -14,4 +14,4 @@ class Deliverfile: DeliverfileProtocol {
14
14
  // during the `init` process, and you won't see this message
15
15
  }
16
16
 
17
- // Generated with fastlane 2.151.2
17
+ // Generated with fastlane 2.155.0
@@ -99,7 +99,7 @@ protocol DeliverfileProtocol: class {
99
99
  var precheckDefaultRuleLevel: String { get }
100
100
 
101
101
  /// **DEPRECATED!** Removed after the migration to the new App Store Connect API in June 2020 - An array of localized metadata items to upload individually by language so that errors can be identified. E.g. ['name', 'keywords', 'description']. Note: slow
102
- var individualMetadataItems: [String] { get }
102
+ var individualMetadataItems: [String]? { get }
103
103
 
104
104
  /// **DEPRECATED!** Removed after the migration to the new App Store Connect API in June 2020 - Metadata: The path to the app icon
105
105
  var appIcon: String? { get }
@@ -214,7 +214,7 @@ extension DeliverfileProtocol {
214
214
  var itcProvider: String? { return nil }
215
215
  var runPrecheckBeforeSubmit: Bool { return true }
216
216
  var precheckDefaultRuleLevel: String { return "warn" }
217
- var individualMetadataItems: [String] { return [] }
217
+ var individualMetadataItems: [String]? { return nil }
218
218
  var appIcon: String? { return nil }
219
219
  var appleWatchAppIcon: String? { return nil }
220
220
  var copyright: String? { return nil }
@@ -245,4 +245,4 @@ extension DeliverfileProtocol {
245
245
 
246
246
  // Please don't remove the lines below
247
247
  // They are used to detect outdated files
248
- // FastlaneRunnerAPIVersion [0.9.24]
248
+ // FastlaneRunnerAPIVersion [0.9.29]
@@ -13,7 +13,8 @@ import Foundation
13
13
  */
14
14
  @discardableResult func adb(serial: String = "",
15
15
  command: String? = nil,
16
- adbPath: String = "adb") -> String {
16
+ adbPath: String = "adb") -> String
17
+ {
17
18
  let command = RubyCommand(commandID: "", methodName: "adb", className: nil, args: [RubyCommand.Argument(name: "serial", value: serial),
18
19
  RubyCommand.Argument(name: "command", value: command),
19
20
  RubyCommand.Argument(name: "adb_path", value: adbPath)])
@@ -76,7 +77,8 @@ func addGitTag(tag: String? = nil,
76
77
  message: String? = nil,
77
78
  commit: String? = nil,
78
79
  force: Bool = false,
79
- sign: Bool = false) {
80
+ sign: Bool = false)
81
+ {
80
82
  let command = RubyCommand(commandID: "", methodName: "add_git_tag", className: nil, args: [RubyCommand.Argument(name: "tag", value: tag),
81
83
  RubyCommand.Argument(name: "grouping", value: grouping),
82
84
  RubyCommand.Argument(name: "prefix", value: prefix),
@@ -112,7 +114,8 @@ func appStoreBuildNumber(initialBuildNumber: Any,
112
114
  live: Bool = true,
113
115
  version: String? = nil,
114
116
  platform: String = "ios",
115
- teamName: String? = nil) {
117
+ teamName: String? = nil)
118
+ {
116
119
  let command = RubyCommand(commandID: "", methodName: "app_store_build_number", className: nil, args: [RubyCommand.Argument(name: "initial_build_number", value: initialBuildNumber),
117
120
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
118
121
  RubyCommand.Argument(name: "username", value: username),
@@ -148,7 +151,8 @@ func appaloosa(binary: String,
148
151
  screenshots: String,
149
152
  locale: String = "en-US",
150
153
  device: String? = nil,
151
- description: String? = nil) {
154
+ description: String? = nil)
155
+ {
152
156
  let command = RubyCommand(commandID: "", methodName: "appaloosa", className: nil, args: [RubyCommand.Argument(name: "binary", value: binary),
153
157
  RubyCommand.Argument(name: "api_token", value: apiToken),
154
158
  RubyCommand.Argument(name: "store_id", value: storeId),
@@ -182,7 +186,8 @@ func appetize(apiHost: String = "api.appetize.io",
182
186
  platform: String = "ios",
183
187
  path: String? = nil,
184
188
  publicKey: String? = nil,
185
- note: String? = nil) {
189
+ note: String? = nil)
190
+ {
186
191
  let command = RubyCommand(commandID: "", methodName: "appetize", className: nil, args: [RubyCommand.Argument(name: "api_host", value: apiHost),
187
192
  RubyCommand.Argument(name: "api_token", value: apiToken),
188
193
  RubyCommand.Argument(name: "url", value: url),
@@ -223,7 +228,8 @@ func appetizeViewingUrlGenerator(publicKey: String,
223
228
  launchUrl: String? = nil,
224
229
  osVersion: String? = nil,
225
230
  params: String? = nil,
226
- proxy: String? = nil) {
231
+ proxy: String? = nil)
232
+ {
227
233
  let command = RubyCommand(commandID: "", methodName: "appetize_viewing_url_generator", className: nil, args: [RubyCommand.Argument(name: "public_key", value: publicKey),
228
234
  RubyCommand.Argument(name: "base_url", value: baseUrl),
229
235
  RubyCommand.Argument(name: "device", value: device),
@@ -260,7 +266,8 @@ func appium(platform: String,
260
266
  port: Int = 4723,
261
267
  appiumPath: String? = nil,
262
268
  caps: [String: Any]? = nil,
263
- appiumLib: [String: Any]? = nil) {
269
+ appiumLib: [String: Any]? = nil)
270
+ {
264
271
  let command = RubyCommand(commandID: "", methodName: "appium", className: nil, args: [RubyCommand.Argument(name: "platform", value: platform),
265
272
  RubyCommand.Argument(name: "spec_path", value: specPath),
266
273
  RubyCommand.Argument(name: "app_path", value: appPath),
@@ -369,7 +376,8 @@ func appledoc(input: Any,
369
376
  docsSectionTitle: String? = nil,
370
377
  warnings: String? = nil,
371
378
  logformat: Any? = nil,
372
- verbose: Any? = nil) {
379
+ verbose: Any? = nil)
380
+ {
373
381
  let command = RubyCommand(commandID: "", methodName: "appledoc", className: nil, args: [RubyCommand.Argument(name: "input", value: input),
374
382
  RubyCommand.Argument(name: "output", value: output),
375
383
  RubyCommand.Argument(name: "templates", value: templates),
@@ -523,7 +531,7 @@ func appstore(username: String,
523
531
  itcProvider: String? = nil,
524
532
  runPrecheckBeforeSubmit: Bool = true,
525
533
  precheckDefaultRuleLevel: Any = "warn",
526
- individualMetadataItems: [String] = [],
534
+ individualMetadataItems: [String]? = nil,
527
535
  appIcon: String? = nil,
528
536
  appleWatchAppIcon: String? = nil,
529
537
  copyright: String? = nil,
@@ -549,7 +557,8 @@ func appstore(username: String,
549
557
  languages: [String]? = nil,
550
558
  ignoreLanguageDirectoryValidation: Bool = false,
551
559
  precheckIncludeInAppPurchases: Bool = true,
552
- app: Any) {
560
+ app: Any)
561
+ {
553
562
  let command = RubyCommand(commandID: "", methodName: "appstore", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
554
563
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
555
564
  RubyCommand.Argument(name: "app_version", value: appVersion),
@@ -623,7 +632,8 @@ func appstore(username: String,
623
632
  */
624
633
  func apteligent(dsym: String? = nil,
625
634
  appId: String,
626
- apiKey: String) {
635
+ apiKey: String)
636
+ {
627
637
  let command = RubyCommand(commandID: "", methodName: "apteligent", className: nil, args: [RubyCommand.Argument(name: "dsym", value: dsym),
628
638
  RubyCommand.Argument(name: "app_id", value: appId),
629
639
  RubyCommand.Argument(name: "api_key", value: apiKey)])
@@ -662,7 +672,8 @@ func artifactory(file: String,
662
672
  proxyPassword: String? = nil,
663
673
  proxyAddress: String? = nil,
664
674
  proxyPort: String? = nil,
665
- readTimeout: String? = nil) {
675
+ readTimeout: String? = nil)
676
+ {
666
677
  let command = RubyCommand(commandID: "", methodName: "artifactory", className: nil, args: [RubyCommand.Argument(name: "file", value: file),
667
678
  RubyCommand.Argument(name: "repo", value: repo),
668
679
  RubyCommand.Argument(name: "repo_path", value: repoPath),
@@ -704,7 +715,8 @@ func automaticCodeSigning(path: String,
704
715
  codeSignIdentity: String? = nil,
705
716
  profileName: String? = nil,
706
717
  profileUuid: String? = nil,
707
- bundleIdentifier: String? = nil) {
718
+ bundleIdentifier: String? = nil)
719
+ {
708
720
  let command = RubyCommand(commandID: "", methodName: "automatic_code_signing", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
709
721
  RubyCommand.Argument(name: "use_automatic_signing", value: useAutomaticSigning),
710
722
  RubyCommand.Argument(name: "team_id", value: teamId),
@@ -740,7 +752,8 @@ func backupXcarchive(xcarchive: String,
740
752
  destination: String,
741
753
  zip: Bool = true,
742
754
  zipFilename: String? = nil,
743
- versioned: Bool = true) {
755
+ versioned: Bool = true)
756
+ {
744
757
  let command = RubyCommand(commandID: "", methodName: "backup_xcarchive", className: nil, args: [RubyCommand.Argument(name: "xcarchive", value: xcarchive),
745
758
  RubyCommand.Argument(name: "destination", value: destination),
746
759
  RubyCommand.Argument(name: "zip", value: zip),
@@ -781,7 +794,8 @@ func badge(dark: Any? = nil,
781
794
  glob: String? = nil,
782
795
  alphaChannel: Any? = nil,
783
796
  shieldGravity: String? = nil,
784
- shieldNoResize: Any? = nil) {
797
+ shieldNoResize: Any? = nil)
798
+ {
785
799
  let command = RubyCommand(commandID: "", methodName: "badge", className: nil, args: [RubyCommand.Argument(name: "dark", value: dark),
786
800
  RubyCommand.Argument(name: "custom", value: custom),
787
801
  RubyCommand.Argument(name: "no_badge", value: noBadge),
@@ -813,7 +827,8 @@ func buildAndUploadToAppetize(xcodebuild: [String: Any] = [:],
813
827
  scheme: String? = nil,
814
828
  apiToken: String,
815
829
  publicKey: String? = nil,
816
- note: String? = nil) {
830
+ note: String? = nil)
831
+ {
817
832
  let command = RubyCommand(commandID: "", methodName: "build_and_upload_to_appetize", className: nil, args: [RubyCommand.Argument(name: "xcodebuild", value: xcodebuild),
818
833
  RubyCommand.Argument(name: "scheme", value: scheme),
819
834
  RubyCommand.Argument(name: "api_token", value: apiToken),
@@ -854,7 +869,8 @@ func buildAndroidApp(task: String? = nil,
854
869
  systemProperties: Any? = nil,
855
870
  serial: String = "",
856
871
  printCommand: Bool = true,
857
- printCommandOutput: Bool = true) {
872
+ printCommandOutput: Bool = true)
873
+ {
858
874
  let command = RubyCommand(commandID: "", methodName: "build_android_app", className: nil, args: [RubyCommand.Argument(name: "task", value: task),
859
875
  RubyCommand.Argument(name: "flavor", value: flavor),
860
876
  RubyCommand.Argument(name: "build_type", value: buildType),
@@ -966,7 +982,8 @@ func buildApp(workspace: String? = nil,
966
982
  analyzeBuildTime: Bool? = nil,
967
983
  xcprettyUtf: Bool? = nil,
968
984
  skipProfileDetection: Bool = false,
969
- clonedSourcePackagesPath: String? = nil) {
985
+ clonedSourcePackagesPath: String? = nil)
986
+ {
970
987
  let command = RubyCommand(commandID: "", methodName: "build_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
971
988
  RubyCommand.Argument(name: "project", value: project),
972
989
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -1104,7 +1121,8 @@ func buildIosApp(workspace: String? = nil,
1104
1121
  analyzeBuildTime: Bool? = nil,
1105
1122
  xcprettyUtf: Bool? = nil,
1106
1123
  skipProfileDetection: Bool = false,
1107
- clonedSourcePackagesPath: String? = nil) {
1124
+ clonedSourcePackagesPath: String? = nil)
1125
+ {
1108
1126
  let command = RubyCommand(commandID: "", methodName: "build_ios_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1109
1127
  RubyCommand.Argument(name: "project", value: project),
1110
1128
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -1241,7 +1259,8 @@ func buildMacApp(workspace: String? = nil,
1241
1259
  analyzeBuildTime: Bool? = nil,
1242
1260
  xcprettyUtf: Bool? = nil,
1243
1261
  skipProfileDetection: Bool = false,
1244
- clonedSourcePackagesPath: String? = nil) {
1262
+ clonedSourcePackagesPath: String? = nil)
1263
+ {
1245
1264
  let command = RubyCommand(commandID: "", methodName: "build_mac_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1246
1265
  RubyCommand.Argument(name: "project", value: project),
1247
1266
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -1327,7 +1346,8 @@ func bundleInstall(binstubs: String? = nil,
1327
1346
  standalone: String? = nil,
1328
1347
  trustPolicy: String? = nil,
1329
1348
  without: String? = nil,
1330
- with: String? = nil) {
1349
+ with: String? = nil)
1350
+ {
1331
1351
  let command = RubyCommand(commandID: "", methodName: "bundle_install", className: nil, args: [RubyCommand.Argument(name: "binstubs", value: binstubs),
1332
1352
  RubyCommand.Argument(name: "clean", value: clean),
1333
1353
  RubyCommand.Argument(name: "full_index", value: fullIndex),
@@ -1397,7 +1417,8 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1397
1417
  exitOnTestFailure: Bool = true,
1398
1418
  reinstallApp: Bool = false,
1399
1419
  useTimestampSuffix: Bool = true,
1400
- adbHost: String? = nil) {
1420
+ adbHost: String? = nil)
1421
+ {
1401
1422
  let command = RubyCommand(commandID: "", methodName: "capture_android_screenshots", className: nil, args: [RubyCommand.Argument(name: "android_home", value: androidHome),
1402
1423
  RubyCommand.Argument(name: "build_tools_version", value: buildToolsVersion),
1403
1424
  RubyCommand.Argument(name: "locales", value: locales),
@@ -1442,6 +1463,7 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1442
1463
  - clearPreviousScreenshots: Enabling this option will automatically clear previously generated screenshots before running snapshot
1443
1464
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
1444
1465
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
1466
+ - headless: Enabling this option will prevent displaying the simulator window
1445
1467
  - overrideStatusBar: Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
1446
1468
  - localizeSimulator: Enabling this option will configure the Simulator's system language
1447
1469
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
@@ -1469,6 +1491,7 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1469
1491
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
1470
1492
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
1471
1493
  - disableXcpretty: Disable xcpretty formatting of build
1494
+ - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
1472
1495
  */
1473
1496
  func captureIosScreenshots(workspace: String? = nil,
1474
1497
  project: String? = nil,
@@ -1485,6 +1508,7 @@ func captureIosScreenshots(workspace: String? = nil,
1485
1508
  clearPreviousScreenshots: Bool = false,
1486
1509
  reinstallApp: Bool = false,
1487
1510
  eraseSimulator: Bool = false,
1511
+ headless: Bool = true,
1488
1512
  overrideStatusBar: Bool = false,
1489
1513
  localizeSimulator: Bool = false,
1490
1514
  darkMode: Bool? = nil,
@@ -1511,7 +1535,9 @@ func captureIosScreenshots(workspace: String? = nil,
1511
1535
  testplan: String? = nil,
1512
1536
  onlyTesting: Any? = nil,
1513
1537
  skipTesting: Any? = nil,
1514
- disableXcpretty: Bool? = nil) {
1538
+ disableXcpretty: Bool? = nil,
1539
+ suppressXcodeOutput: Bool? = nil)
1540
+ {
1515
1541
  let command = RubyCommand(commandID: "", methodName: "capture_ios_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1516
1542
  RubyCommand.Argument(name: "project", value: project),
1517
1543
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1527,6 +1553,7 @@ func captureIosScreenshots(workspace: String? = nil,
1527
1553
  RubyCommand.Argument(name: "clear_previous_screenshots", value: clearPreviousScreenshots),
1528
1554
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
1529
1555
  RubyCommand.Argument(name: "erase_simulator", value: eraseSimulator),
1556
+ RubyCommand.Argument(name: "headless", value: headless),
1530
1557
  RubyCommand.Argument(name: "override_status_bar", value: overrideStatusBar),
1531
1558
  RubyCommand.Argument(name: "localize_simulator", value: localizeSimulator),
1532
1559
  RubyCommand.Argument(name: "dark_mode", value: darkMode),
@@ -1553,7 +1580,8 @@ func captureIosScreenshots(workspace: String? = nil,
1553
1580
  RubyCommand.Argument(name: "testplan", value: testplan),
1554
1581
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
1555
1582
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
1556
- RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty)])
1583
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty),
1584
+ RubyCommand.Argument(name: "suppress_xcode_output", value: suppressXcodeOutput)])
1557
1585
  _ = runner.executeCommand(command)
1558
1586
  }
1559
1587
 
@@ -1576,6 +1604,7 @@ func captureIosScreenshots(workspace: String? = nil,
1576
1604
  - clearPreviousScreenshots: Enabling this option will automatically clear previously generated screenshots before running snapshot
1577
1605
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
1578
1606
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
1607
+ - headless: Enabling this option will prevent displaying the simulator window
1579
1608
  - overrideStatusBar: Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
1580
1609
  - localizeSimulator: Enabling this option will configure the Simulator's system language
1581
1610
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
@@ -1603,6 +1632,7 @@ func captureIosScreenshots(workspace: String? = nil,
1603
1632
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
1604
1633
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
1605
1634
  - disableXcpretty: Disable xcpretty formatting of build
1635
+ - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
1606
1636
  */
1607
1637
  func captureScreenshots(workspace: String? = nil,
1608
1638
  project: String? = nil,
@@ -1619,6 +1649,7 @@ func captureScreenshots(workspace: String? = nil,
1619
1649
  clearPreviousScreenshots: Bool = false,
1620
1650
  reinstallApp: Bool = false,
1621
1651
  eraseSimulator: Bool = false,
1652
+ headless: Bool = true,
1622
1653
  overrideStatusBar: Bool = false,
1623
1654
  localizeSimulator: Bool = false,
1624
1655
  darkMode: Bool? = nil,
@@ -1645,7 +1676,9 @@ func captureScreenshots(workspace: String? = nil,
1645
1676
  testplan: String? = nil,
1646
1677
  onlyTesting: Any? = nil,
1647
1678
  skipTesting: Any? = nil,
1648
- disableXcpretty: Bool? = nil) {
1679
+ disableXcpretty: Bool? = nil,
1680
+ suppressXcodeOutput: Bool? = nil)
1681
+ {
1649
1682
  let command = RubyCommand(commandID: "", methodName: "capture_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1650
1683
  RubyCommand.Argument(name: "project", value: project),
1651
1684
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1661,6 +1694,7 @@ func captureScreenshots(workspace: String? = nil,
1661
1694
  RubyCommand.Argument(name: "clear_previous_screenshots", value: clearPreviousScreenshots),
1662
1695
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
1663
1696
  RubyCommand.Argument(name: "erase_simulator", value: eraseSimulator),
1697
+ RubyCommand.Argument(name: "headless", value: headless),
1664
1698
  RubyCommand.Argument(name: "override_status_bar", value: overrideStatusBar),
1665
1699
  RubyCommand.Argument(name: "localize_simulator", value: localizeSimulator),
1666
1700
  RubyCommand.Argument(name: "dark_mode", value: darkMode),
@@ -1687,7 +1721,8 @@ func captureScreenshots(workspace: String? = nil,
1687
1721
  RubyCommand.Argument(name: "testplan", value: testplan),
1688
1722
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
1689
1723
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
1690
- RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty)])
1724
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty),
1725
+ RubyCommand.Argument(name: "suppress_xcode_output", value: suppressXcodeOutput)])
1691
1726
  _ = runner.executeCommand(command)
1692
1727
  }
1693
1728
 
@@ -1699,6 +1734,7 @@ func captureScreenshots(workspace: String? = nil,
1699
1734
  - dependencies: Carthage dependencies to update, build or bootstrap
1700
1735
  - useSsh: Use SSH for downloading GitHub repositories
1701
1736
  - useSubmodules: Add dependencies as Git submodules
1737
+ - useNetrc: Use .netrc for downloading frameworks
1702
1738
  - useBinaries: Check out dependency repositories even when prebuilt frameworks exist
1703
1739
  - noCheckout: When bootstrapping Carthage do not checkout
1704
1740
  - noBuild: When bootstrapping Carthage do not build
@@ -1720,6 +1756,7 @@ func carthage(command: String = "bootstrap",
1720
1756
  dependencies: [String] = [],
1721
1757
  useSsh: Bool? = nil,
1722
1758
  useSubmodules: Bool? = nil,
1759
+ useNetrc: Bool? = nil,
1723
1760
  useBinaries: Bool? = nil,
1724
1761
  noCheckout: Bool? = nil,
1725
1762
  noBuild: Bool? = nil,
@@ -1735,11 +1772,13 @@ func carthage(command: String = "bootstrap",
1735
1772
  projectDirectory: String? = nil,
1736
1773
  newResolver: Bool? = nil,
1737
1774
  logPath: String? = nil,
1738
- executable: String = "carthage") {
1775
+ executable: String = "carthage")
1776
+ {
1739
1777
  let command = RubyCommand(commandID: "", methodName: "carthage", className: nil, args: [RubyCommand.Argument(name: "command", value: command),
1740
1778
  RubyCommand.Argument(name: "dependencies", value: dependencies),
1741
1779
  RubyCommand.Argument(name: "use_ssh", value: useSsh),
1742
1780
  RubyCommand.Argument(name: "use_submodules", value: useSubmodules),
1781
+ RubyCommand.Argument(name: "use_netrc", value: useNetrc),
1743
1782
  RubyCommand.Argument(name: "use_binaries", value: useBinaries),
1744
1783
  RubyCommand.Argument(name: "no_checkout", value: noCheckout),
1745
1784
  RubyCommand.Argument(name: "no_build", value: noBuild),
@@ -1790,7 +1829,8 @@ func cert(development: Bool = false,
1790
1829
  outputPath: String = ".",
1791
1830
  keychainPath: String,
1792
1831
  keychainPassword: String? = nil,
1793
- platform: String = "ios") {
1832
+ platform: String = "ios")
1833
+ {
1794
1834
  let command = RubyCommand(commandID: "", methodName: "cert", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
1795
1835
  RubyCommand.Argument(name: "type", value: type),
1796
1836
  RubyCommand.Argument(name: "force", value: force),
@@ -1836,7 +1876,8 @@ func cert(development: Bool = false,
1836
1876
  matchLightweightTag: Bool = true,
1837
1877
  quiet: Bool = false,
1838
1878
  includeMerges: Bool? = nil,
1839
- mergeCommitFiltering: String = "include_merges") -> String {
1879
+ mergeCommitFiltering: String = "include_merges") -> String
1880
+ {
1840
1881
  let command = RubyCommand(commandID: "", methodName: "changelog_from_git_commits", className: nil, args: [RubyCommand.Argument(name: "between", value: between),
1841
1882
  RubyCommand.Argument(name: "commits_count", value: commitsCount),
1842
1883
  RubyCommand.Argument(name: "path", value: path),
@@ -1865,7 +1906,8 @@ func cert(development: Bool = false,
1865
1906
  func chatwork(apiToken: String,
1866
1907
  message: String,
1867
1908
  roomid: Any,
1868
- success: Bool = true) {
1909
+ success: Bool = true)
1910
+ {
1869
1911
  let command = RubyCommand(commandID: "", methodName: "chatwork", className: nil, args: [RubyCommand.Argument(name: "api_token", value: apiToken),
1870
1912
  RubyCommand.Argument(name: "message", value: message),
1871
1913
  RubyCommand.Argument(name: "roomid", value: roomid),
@@ -1913,7 +1955,8 @@ func checkAppStoreMetadata(appIdentifier: String,
1913
1955
  freeStuffInIap: Any? = nil,
1914
1956
  customText: Any? = nil,
1915
1957
  copyrightDate: Any? = nil,
1916
- unreachableUrls: Any? = nil) {
1958
+ unreachableUrls: Any? = nil)
1959
+ {
1917
1960
  let command = RubyCommand(commandID: "", methodName: "check_app_store_metadata", className: nil, args: [RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
1918
1961
  RubyCommand.Argument(name: "username", value: username),
1919
1962
  RubyCommand.Argument(name: "team_id", value: teamId),
@@ -1996,7 +2039,8 @@ func cloc(binaryPath: String = "/usr/local/bin/cloc",
1996
2039
  excludeDir: String? = nil,
1997
2040
  outputDirectory: String = "build",
1998
2041
  sourceDirectory: String = "",
1999
- xml: Bool = true) {
2042
+ xml: Bool = true)
2043
+ {
2000
2044
  let command = RubyCommand(commandID: "", methodName: "cloc", className: nil, args: [RubyCommand.Argument(name: "binary_path", value: binaryPath),
2001
2045
  RubyCommand.Argument(name: "exclude_dir", value: excludeDir),
2002
2046
  RubyCommand.Argument(name: "output_directory", value: outputDirectory),
@@ -2043,7 +2087,8 @@ func cocoapods(repoUpdate: Bool = false,
2043
2087
  tryRepoUpdateOnError: Bool = false,
2044
2088
  deployment: Bool = false,
2045
2089
  clean: Bool = true,
2046
- integrate: Bool = true) {
2090
+ integrate: Bool = true)
2091
+ {
2047
2092
  let command = RubyCommand(commandID: "", methodName: "cocoapods", className: nil, args: [RubyCommand.Argument(name: "repo_update", value: repoUpdate),
2048
2093
  RubyCommand.Argument(name: "clean_install", value: cleanInstall),
2049
2094
  RubyCommand.Argument(name: "silent", value: silent),
@@ -2084,7 +2129,8 @@ func cocoapods(repoUpdate: Bool = false,
2084
2129
  branch: String = "master",
2085
2130
  path: String,
2086
2131
  message: String? = nil,
2087
- secure: Bool = true) -> [String: String] {
2132
+ secure: Bool = true) -> [String: String]
2133
+ {
2088
2134
  let command = RubyCommand(commandID: "", methodName: "commit_github_file", className: nil, args: [RubyCommand.Argument(name: "repository_name", value: repositoryName),
2089
2135
  RubyCommand.Argument(name: "server_url", value: serverUrl),
2090
2136
  RubyCommand.Argument(name: "api_token", value: apiToken),
@@ -2123,7 +2169,8 @@ func commitVersionBump(message: String? = nil,
2123
2169
  settings: Bool = false,
2124
2170
  ignore: Any? = nil,
2125
2171
  include: [String] = [],
2126
- noVerify: Bool = false) {
2172
+ noVerify: Bool = false)
2173
+ {
2127
2174
  let command = RubyCommand(commandID: "", methodName: "commit_version_bump", className: nil, args: [RubyCommand.Argument(name: "message", value: message),
2128
2175
  RubyCommand.Argument(name: "xcodeproj", value: xcodeproj),
2129
2176
  RubyCommand.Argument(name: "force", value: force),
@@ -2149,7 +2196,8 @@ func commitVersionBump(message: String? = nil,
2149
2196
  func copyArtifacts(keepOriginal: Bool = true,
2150
2197
  targetPath: Any = "artifacts",
2151
2198
  artifacts: [String] = [],
2152
- failOnMissing: Bool = false) {
2199
+ failOnMissing: Bool = false)
2200
+ {
2153
2201
  let command = RubyCommand(commandID: "", methodName: "copy_artifacts", className: nil, args: [RubyCommand.Argument(name: "keep_original", value: keepOriginal),
2154
2202
  RubyCommand.Argument(name: "target_path", value: targetPath),
2155
2203
  RubyCommand.Argument(name: "artifacts", value: artifacts),
@@ -2187,7 +2235,8 @@ func crashlytics(ipaPath: String? = nil,
2187
2235
  groups: Any? = nil,
2188
2236
  emails: Any? = nil,
2189
2237
  notifications: Bool = true,
2190
- debug: Bool = false) {
2238
+ debug: Bool = false)
2239
+ {
2191
2240
  let command = RubyCommand(commandID: "", methodName: "crashlytics", className: nil, args: [RubyCommand.Argument(name: "ipa_path", value: ipaPath),
2192
2241
  RubyCommand.Argument(name: "apk_path", value: apkPath),
2193
2242
  RubyCommand.Argument(name: "crashlytics_path", value: crashlyticsPath),
@@ -2224,7 +2273,8 @@ func createAppOnManagedPlayStore(jsonKey: String? = nil,
2224
2273
  appTitle: String,
2225
2274
  language: String = "en_US",
2226
2275
  rootUrl: String? = nil,
2227
- timeout: Int = 300) {
2276
+ timeout: Int = 300)
2277
+ {
2228
2278
  let command = RubyCommand(commandID: "", methodName: "create_app_on_managed_play_store", className: nil, args: [RubyCommand.Argument(name: "json_key", value: jsonKey),
2229
2279
  RubyCommand.Argument(name: "json_key_data", value: jsonKeyData),
2230
2280
  RubyCommand.Argument(name: "developer_account_id", value: developerAccountId),
@@ -2282,7 +2332,8 @@ func createAppOnline(username: String,
2282
2332
  teamId: String? = nil,
2283
2333
  teamName: String? = nil,
2284
2334
  itcTeamId: Any? = nil,
2285
- itcTeamName: String? = nil) {
2335
+ itcTeamName: String? = nil)
2336
+ {
2286
2337
  let command = RubyCommand(commandID: "", methodName: "create_app_online", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
2287
2338
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
2288
2339
  RubyCommand.Argument(name: "bundle_identifier_suffix", value: bundleIdentifierSuffix),
@@ -2329,7 +2380,8 @@ func createKeychain(name: String? = nil,
2329
2380
  lockWhenSleeps: Bool = false,
2330
2381
  lockAfterTimeout: Bool = false,
2331
2382
  addToSearchList: Bool = true,
2332
- requireCreate: Bool = false) {
2383
+ requireCreate: Bool = false)
2384
+ {
2333
2385
  let command = RubyCommand(commandID: "", methodName: "create_keychain", className: nil, args: [RubyCommand.Argument(name: "name", value: name),
2334
2386
  RubyCommand.Argument(name: "path", value: path),
2335
2387
  RubyCommand.Argument(name: "password", value: password),
@@ -2375,7 +2427,8 @@ func createPullRequest(apiToken: String,
2375
2427
  apiUrl: String = "https://api.github.com",
2376
2428
  assignees: [String]? = nil,
2377
2429
  reviewers: [String]? = nil,
2378
- teamReviewers: [String]? = nil) {
2430
+ teamReviewers: [String]? = nil)
2431
+ {
2379
2432
  let command = RubyCommand(commandID: "", methodName: "create_pull_request", className: nil, args: [RubyCommand.Argument(name: "api_token", value: apiToken),
2380
2433
  RubyCommand.Argument(name: "repo", value: repo),
2381
2434
  RubyCommand.Argument(name: "title", value: title),
@@ -2421,7 +2474,8 @@ func danger(useBundleExec: Bool = true,
2421
2474
  removePreviousComments: Bool = false,
2422
2475
  base: String? = nil,
2423
2476
  head: String? = nil,
2424
- pr: String? = nil) {
2477
+ pr: String? = nil)
2478
+ {
2425
2479
  let command = RubyCommand(commandID: "", methodName: "danger", className: nil, args: [RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
2426
2480
  RubyCommand.Argument(name: "verbose", value: verbose),
2427
2481
  RubyCommand.Argument(name: "danger_id", value: dangerId),
@@ -2462,7 +2516,8 @@ func defaultPlatform() {
2462
2516
  Keychains can be deleted after being created with `create_keychain`
2463
2517
  */
2464
2518
  func deleteKeychain(name: String? = nil,
2465
- keychainPath: String? = nil) {
2519
+ keychainPath: String? = nil)
2520
+ {
2466
2521
  let command = RubyCommand(commandID: "", methodName: "delete_keychain", className: nil, args: [RubyCommand.Argument(name: "name", value: name),
2467
2522
  RubyCommand.Argument(name: "keychain_path", value: keychainPath)])
2468
2523
  _ = runner.executeCommand(command)
@@ -2573,7 +2628,7 @@ func deliver(username: Any = deliverfile.username,
2573
2628
  itcProvider: Any? = deliverfile.itcProvider,
2574
2629
  runPrecheckBeforeSubmit: Bool = deliverfile.runPrecheckBeforeSubmit,
2575
2630
  precheckDefaultRuleLevel: Any = deliverfile.precheckDefaultRuleLevel,
2576
- individualMetadataItems: [String] = deliverfile.individualMetadataItems,
2631
+ individualMetadataItems: [String]? = deliverfile.individualMetadataItems,
2577
2632
  appIcon: Any? = deliverfile.appIcon,
2578
2633
  appleWatchAppIcon: Any? = deliverfile.appleWatchAppIcon,
2579
2634
  copyright: Any? = deliverfile.copyright,
@@ -2599,7 +2654,8 @@ func deliver(username: Any = deliverfile.username,
2599
2654
  languages: [String]? = deliverfile.languages,
2600
2655
  ignoreLanguageDirectoryValidation: Bool = deliverfile.ignoreLanguageDirectoryValidation,
2601
2656
  precheckIncludeInAppPurchases: Bool = deliverfile.precheckIncludeInAppPurchases,
2602
- app: Any = deliverfile.app) {
2657
+ app: Any = deliverfile.app)
2658
+ {
2603
2659
  let command = RubyCommand(commandID: "", methodName: "deliver", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
2604
2660
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
2605
2661
  RubyCommand.Argument(name: "app_version", value: appVersion),
@@ -2688,7 +2744,8 @@ func deploygate(apiToken: String,
2688
2744
  distributionKey: String? = nil,
2689
2745
  releaseNote: String? = nil,
2690
2746
  disableNotify: Bool = false,
2691
- distributionName: String? = nil) {
2747
+ distributionName: String? = nil)
2748
+ {
2692
2749
  let command = RubyCommand(commandID: "", methodName: "deploygate", className: nil, args: [RubyCommand.Argument(name: "api_token", value: apiToken),
2693
2750
  RubyCommand.Argument(name: "user", value: user),
2694
2751
  RubyCommand.Argument(name: "ipa", value: ipa),
@@ -2760,11 +2817,12 @@ func downloadDsyms(username: String,
2760
2817
  teamName: String? = nil,
2761
2818
  platform: String = "ios",
2762
2819
  version: String? = nil,
2763
- buildNumber: String? = nil,
2820
+ buildNumber: Any? = nil,
2764
2821
  minVersion: String? = nil,
2765
2822
  outputDirectory: String? = nil,
2766
2823
  waitForDsymProcessing: Bool = false,
2767
- waitTimeout: Int = 300) {
2824
+ waitTimeout: Int = 300)
2825
+ {
2768
2826
  let command = RubyCommand(commandID: "", methodName: "download_dsyms", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
2769
2827
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
2770
2828
  RubyCommand.Argument(name: "team_id", value: teamId),
@@ -2805,7 +2863,8 @@ func downloadFromPlayStore(packageName: String,
2805
2863
  jsonKey: String? = nil,
2806
2864
  jsonKeyData: String? = nil,
2807
2865
  rootUrl: String? = nil,
2808
- timeout: Int = 300) {
2866
+ timeout: Int = 300)
2867
+ {
2809
2868
  let command = RubyCommand(commandID: "", methodName: "download_from_play_store", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
2810
2869
  RubyCommand.Argument(name: "version_name", value: versionName),
2811
2870
  RubyCommand.Argument(name: "track", value: track),
@@ -2831,7 +2890,8 @@ func downloadFromPlayStore(packageName: String,
2831
2890
  */
2832
2891
  func dsymZip(archivePath: String? = nil,
2833
2892
  dsymPath: String? = nil,
2834
- all: Bool = false) {
2893
+ all: Bool = false)
2894
+ {
2835
2895
  let command = RubyCommand(commandID: "", methodName: "dsym_zip", className: nil, args: [RubyCommand.Argument(name: "archive_path", value: archivePath),
2836
2896
  RubyCommand.Argument(name: "dsym_path", value: dsymPath),
2837
2897
  RubyCommand.Argument(name: "all", value: all)])
@@ -2896,7 +2956,8 @@ func ensureGitBranch(branch: String = "master") {
2896
2956
  Also needed as a prerequisite for some other actions like `reset_git_repo`.
2897
2957
  */
2898
2958
  func ensureGitStatusClean(showUncommittedChanges: Bool = false,
2899
- showDiff: Bool = false) {
2959
+ showDiff: Bool = false)
2960
+ {
2900
2961
  let command = RubyCommand(commandID: "", methodName: "ensure_git_status_clean", className: nil, args: [RubyCommand.Argument(name: "show_uncommitted_changes", value: showUncommittedChanges),
2901
2962
  RubyCommand.Argument(name: "show_diff", value: showDiff)])
2902
2963
  _ = runner.executeCommand(command)
@@ -2921,7 +2982,8 @@ func ensureNoDebugCode(text: String,
2921
2982
  extension: String? = nil,
2922
2983
  extensions: Any? = nil,
2923
2984
  exclude: String? = nil,
2924
- excludeDirs: [String]? = nil) {
2985
+ excludeDirs: [String]? = nil)
2986
+ {
2925
2987
  let command = RubyCommand(commandID: "", methodName: "ensure_no_debug_code", className: nil, args: [RubyCommand.Argument(name: "text", value: text),
2926
2988
  RubyCommand.Argument(name: "path", value: path),
2927
2989
  RubyCommand.Argument(name: "extension", value: `extension`),
@@ -2944,7 +3006,8 @@ func ensureNoDebugCode(text: String,
2944
3006
  Using the `strict` parameter, you can either verify the full set of version numbers strictly (i.e. `11.3.1`) or only a subset of them (i.e. `11.3` or `11`).
2945
3007
  */
2946
3008
  func ensureXcodeVersion(version: String? = nil,
2947
- strict: Bool = true) {
3009
+ strict: Bool = true)
3010
+ {
2948
3011
  let command = RubyCommand(commandID: "", methodName: "ensure_xcode_version", className: nil, args: [RubyCommand.Argument(name: "version", value: version),
2949
3012
  RubyCommand.Argument(name: "strict", value: strict)])
2950
3013
  _ = runner.executeCommand(command)
@@ -2960,7 +3023,8 @@ func ensureXcodeVersion(version: String? = nil,
2960
3023
  */
2961
3024
  @discardableResult func environmentVariable(set: [String: Any]? = nil,
2962
3025
  get: String? = nil,
2963
- remove: String? = nil) -> String {
3026
+ remove: String? = nil) -> String
3027
+ {
2964
3028
  let command = RubyCommand(commandID: "", methodName: "environment_variable", className: nil, args: [RubyCommand.Argument(name: "set", value: set),
2965
3029
  RubyCommand.Argument(name: "get", value: get),
2966
3030
  RubyCommand.Argument(name: "remove", value: remove)])
@@ -2974,16 +3038,20 @@ func ensureXcodeVersion(version: String? = nil,
2974
3038
  - template: ERB Template File
2975
3039
  - destination: Destination file
2976
3040
  - placeholders: Placeholders given as a hash
3041
+ - trimMode: Trim mode applied to the ERB
2977
3042
 
2978
3043
  Renders an ERB template with `:placeholders` given as a hash via parameter.
2979
3044
  If no `:destination` is set, it returns the rendered template as string.
2980
3045
  */
2981
3046
  func erb(template: String,
2982
3047
  destination: String? = nil,
2983
- placeholders: [String: Any] = [:]) {
3048
+ placeholders: [String: Any] = [:],
3049
+ trimMode: String? = nil)
3050
+ {
2984
3051
  let command = RubyCommand(commandID: "", methodName: "erb", className: nil, args: [RubyCommand.Argument(name: "template", value: template),
2985
3052
  RubyCommand.Argument(name: "destination", value: destination),
2986
- RubyCommand.Argument(name: "placeholders", value: placeholders)])
3053
+ RubyCommand.Argument(name: "placeholders", value: placeholders),
3054
+ RubyCommand.Argument(name: "trim_mode", value: trimMode)])
2987
3055
  _ = runner.executeCommand(command)
2988
3056
  }
2989
3057
 
@@ -3010,7 +3078,8 @@ func fastlaneVersion() {
3010
3078
  */
3011
3079
  func flock(message: String,
3012
3080
  token: String,
3013
- baseUrl: String = "https://api.flock.co/hooks/sendMessage") {
3081
+ baseUrl: String = "https://api.flock.co/hooks/sendMessage")
3082
+ {
3014
3083
  let command = RubyCommand(commandID: "", methodName: "flock", className: nil, args: [RubyCommand.Argument(name: "message", value: message),
3015
3084
  RubyCommand.Argument(name: "token", value: token),
3016
3085
  RubyCommand.Argument(name: "base_url", value: baseUrl)])
@@ -3058,7 +3127,8 @@ func frameScreenshots(white: Bool? = nil,
3058
3127
  debugMode: Bool = false,
3059
3128
  resume: Bool = false,
3060
3129
  usePlatform: String = "IOS",
3061
- path: String = "./") {
3130
+ path: String = "./")
3131
+ {
3062
3132
  let command = RubyCommand(commandID: "", methodName: "frame_screenshots", className: nil, args: [RubyCommand.Argument(name: "white", value: white),
3063
3133
  RubyCommand.Argument(name: "silver", value: silver),
3064
3134
  RubyCommand.Argument(name: "rose_gold", value: roseGold),
@@ -3120,7 +3190,8 @@ func frameit(white: Bool? = nil,
3120
3190
  debugMode: Bool = false,
3121
3191
  resume: Bool = false,
3122
3192
  usePlatform: String = "IOS",
3123
- path: String = "./") {
3193
+ path: String = "./")
3194
+ {
3124
3195
  let command = RubyCommand(commandID: "", methodName: "frameit", className: nil, args: [RubyCommand.Argument(name: "white", value: white),
3125
3196
  RubyCommand.Argument(name: "silver", value: silver),
3126
3197
  RubyCommand.Argument(name: "rose_gold", value: roseGold),
@@ -3162,7 +3233,8 @@ func gcovr() {
3162
3233
  You first have to set up your Xcode project, if you haven't done it already: [https://developer.apple.com/library/ios/qa/qa1827/_index.html](https://developer.apple.com/library/ios/qa/qa1827/_index.html).
3163
3234
  */
3164
3235
  @discardableResult func getBuildNumber(xcodeproj: String? = nil,
3165
- hideErrorWhenVersioningDisabled: Bool = false) -> String {
3236
+ hideErrorWhenVersioningDisabled: Bool = false) -> String
3237
+ {
3166
3238
  let command = RubyCommand(commandID: "", methodName: "get_build_number", className: nil, args: [RubyCommand.Argument(name: "xcodeproj", value: xcodeproj),
3167
3239
  RubyCommand.Argument(name: "hide_error_when_versioning_disabled", value: hideErrorWhenVersioningDisabled)])
3168
3240
  return runner.executeCommand(command)
@@ -3215,7 +3287,8 @@ func getCertificates(development: Bool = false,
3215
3287
  outputPath: String = ".",
3216
3288
  keychainPath: String,
3217
3289
  keychainPassword: String? = nil,
3218
- platform: String = "ios") {
3290
+ platform: String = "ios")
3291
+ {
3219
3292
  let command = RubyCommand(commandID: "", methodName: "get_certificates", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
3220
3293
  RubyCommand.Argument(name: "type", value: type),
3221
3294
  RubyCommand.Argument(name: "force", value: force),
@@ -3286,7 +3359,8 @@ func getCertificates(development: Bool = false,
3286
3359
  func getGithubRelease(url: String,
3287
3360
  serverUrl: String = "https://api.github.com",
3288
3361
  version: String,
3289
- apiToken: String? = nil) {
3362
+ apiToken: String? = nil)
3363
+ {
3290
3364
  let command = RubyCommand(commandID: "", methodName: "get_github_release", className: nil, args: [RubyCommand.Argument(name: "url", value: url),
3291
3365
  RubyCommand.Argument(name: "server_url", value: serverUrl),
3292
3366
  RubyCommand.Argument(name: "version", value: version),
@@ -3304,7 +3378,8 @@ func getGithubRelease(url: String,
3304
3378
  Get a value from a plist file, which can be used to fetch the app identifier and more information about your app
3305
3379
  */
3306
3380
  @discardableResult func getInfoPlistValue(key: String,
3307
- path: String) -> String {
3381
+ path: String) -> String
3382
+ {
3308
3383
  let command = RubyCommand(commandID: "", methodName: "get_info_plist_value", className: nil, args: [RubyCommand.Argument(name: "key", value: key),
3309
3384
  RubyCommand.Argument(name: "path", value: path)])
3310
3385
  return runner.executeCommand(command)
@@ -3322,7 +3397,8 @@ func getGithubRelease(url: String,
3322
3397
  This is useful for introspecting Info.plist files for `.ipa` files that have already been built.
3323
3398
  */
3324
3399
  @discardableResult func getIpaInfoPlistValue(key: String,
3325
- ipa: String) -> String {
3400
+ ipa: String) -> String
3401
+ {
3326
3402
  let command = RubyCommand(commandID: "", methodName: "get_ipa_info_plist_value", className: nil, args: [RubyCommand.Argument(name: "key", value: key),
3327
3403
  RubyCommand.Argument(name: "ipa", value: ipa)])
3328
3404
  return runner.executeCommand(command)
@@ -3343,7 +3419,8 @@ func getGithubRelease(url: String,
3343
3419
  Run the action and supply the "private key file" to it as the `json_key` parameter. The command will output a URL to visit. After logging in you are redirected to a page that outputs your "Developer Account ID" - take note of that, you will need it to be able to use [`create_app_on_managed_play_store`](https://docs.fastlane.tools/actions/create_app_on_managed_play_store/).
3344
3420
  */
3345
3421
  func getManagedPlayStorePublishingRights(jsonKey: String? = nil,
3346
- jsonKeyData: String? = nil) {
3422
+ jsonKeyData: String? = nil)
3423
+ {
3347
3424
  let command = RubyCommand(commandID: "", methodName: "get_managed_play_store_publishing_rights", className: nil, args: [RubyCommand.Argument(name: "json_key", value: jsonKey),
3348
3425
  RubyCommand.Argument(name: "json_key_data", value: jsonKeyData)])
3349
3426
  _ = runner.executeCommand(command)
@@ -3370,7 +3447,7 @@ func getManagedPlayStorePublishingRights(jsonKey: String? = nil,
3370
3447
  - filename: Filename to use for the generated provisioning profile (must include .mobileprovision)
3371
3448
  - skipFetchProfiles: Skips the verification of existing profiles which is useful if you have thousands of profiles
3372
3449
  - skipCertificateVerification: Skips the verification of the certificates for every existing profiles. This will make sure the provisioning profile can be used on the local machine
3373
- - platform: Set the provisioning profile's platform (i.e. ios, tvos)
3450
+ - platform: Set the provisioning profile's platform (i.e. ios, tvos, macos, catalyst)
3374
3451
  - readonly: Only fetch existing profile, don't generate new ones
3375
3452
  - 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")
3376
3453
  - 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
@@ -3399,7 +3476,8 @@ func getProvisioningProfile(adhoc: Bool = false,
3399
3476
  platform: Any = "ios",
3400
3477
  readonly: Bool = false,
3401
3478
  templateName: String? = nil,
3402
- failOnNameTaken: Bool = false) {
3479
+ failOnNameTaken: Bool = false)
3480
+ {
3403
3481
  let command = RubyCommand(commandID: "", methodName: "get_provisioning_profile", className: nil, args: [RubyCommand.Argument(name: "adhoc", value: adhoc),
3404
3482
  RubyCommand.Argument(name: "developer_id", value: developerId),
3405
3483
  RubyCommand.Argument(name: "development", value: development),
@@ -3468,7 +3546,8 @@ func getPushCertificate(development: Bool = false,
3468
3546
  p12Password: String,
3469
3547
  pemName: String? = nil,
3470
3548
  outputPath: String = ".",
3471
- newProfile: Any? = nil) {
3549
+ newProfile: Any? = nil)
3550
+ {
3472
3551
  let command = RubyCommand(commandID: "", methodName: "get_push_certificate", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
3473
3552
  RubyCommand.Argument(name: "website_push", value: websitePush),
3474
3553
  RubyCommand.Argument(name: "generate_p12", value: generateP12),
@@ -3498,7 +3577,8 @@ func getPushCertificate(development: Bool = false,
3498
3577
  */
3499
3578
  @discardableResult func getVersionNumber(xcodeproj: String? = nil,
3500
3579
  target: String? = nil,
3501
- configuration: String? = nil) -> String {
3580
+ configuration: String? = nil) -> String
3581
+ {
3502
3582
  let command = RubyCommand(commandID: "", methodName: "get_version_number", className: nil, args: [RubyCommand.Argument(name: "xcodeproj", value: xcodeproj),
3503
3583
  RubyCommand.Argument(name: "target", value: target),
3504
3584
  RubyCommand.Argument(name: "configuration", value: configuration)])
@@ -3515,7 +3595,8 @@ func getPushCertificate(development: Bool = false,
3515
3595
  */
3516
3596
  func gitAdd(path: Any? = nil,
3517
3597
  shellEscape: Bool = true,
3518
- pathspec: String? = nil) {
3598
+ pathspec: String? = nil)
3599
+ {
3519
3600
  let command = RubyCommand(commandID: "", methodName: "git_add", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
3520
3601
  RubyCommand.Argument(name: "shell_escape", value: shellEscape),
3521
3602
  RubyCommand.Argument(name: "pathspec", value: pathspec)])
@@ -3544,7 +3625,8 @@ func gitAdd(path: Any? = nil,
3544
3625
  func gitCommit(path: Any,
3545
3626
  message: String,
3546
3627
  skipGitHooks: Bool? = nil,
3547
- allowNothingToCommit: Bool? = nil) {
3628
+ allowNothingToCommit: Bool? = nil)
3629
+ {
3548
3630
  let command = RubyCommand(commandID: "", methodName: "git_commit", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
3549
3631
  RubyCommand.Argument(name: "message", value: message),
3550
3632
  RubyCommand.Argument(name: "skip_git_hooks", value: skipGitHooks),
@@ -3555,10 +3637,15 @@ func gitCommit(path: Any,
3555
3637
  /**
3556
3638
  Executes a simple git pull command
3557
3639
 
3558
- - parameter onlyTags: Simply pull the tags, and not bring new commits to the current branch from the remote
3640
+ - parameters:
3641
+ - onlyTags: Simply pull the tags, and not bring new commits to the current branch from the remote
3642
+ - rebase: Rebase on top of the remote branch instead of merge
3559
3643
  */
3560
- func gitPull(onlyTags: Bool = false) {
3561
- let command = RubyCommand(commandID: "", methodName: "git_pull", className: nil, args: [RubyCommand.Argument(name: "only_tags", value: onlyTags)])
3644
+ func gitPull(onlyTags: Bool = false,
3645
+ rebase: Bool = false)
3646
+ {
3647
+ let command = RubyCommand(commandID: "", methodName: "git_pull", className: nil, args: [RubyCommand.Argument(name: "only_tags", value: onlyTags),
3648
+ RubyCommand.Argument(name: "rebase", value: rebase)])
3562
3649
  _ = runner.executeCommand(command)
3563
3650
  }
3564
3651
 
@@ -3570,7 +3657,8 @@ func gitPull(onlyTags: Bool = false) {
3570
3657
  - init: Should the submodules be initiated before update
3571
3658
  */
3572
3659
  func gitSubmoduleUpdate(recursive: Bool = false,
3573
- init: Bool = false) {
3660
+ init: Bool = false)
3661
+ {
3574
3662
  let command = RubyCommand(commandID: "", methodName: "git_submodule_update", className: nil, args: [RubyCommand.Argument(name: "recursive", value: recursive),
3575
3663
  RubyCommand.Argument(name: "init", value: `init`)])
3576
3664
  _ = runner.executeCommand(command)
@@ -3588,7 +3676,8 @@ func gitSubmoduleUpdate(recursive: Bool = false,
3588
3676
  */
3589
3677
  func gitTagExists(tag: String,
3590
3678
  remote: Bool = false,
3591
- remoteName: String = "origin") {
3679
+ remoteName: String = "origin")
3680
+ {
3592
3681
  let command = RubyCommand(commandID: "", methodName: "git_tag_exists", className: nil, args: [RubyCommand.Argument(name: "tag", value: tag),
3593
3682
  RubyCommand.Argument(name: "remote", value: remote),
3594
3683
  RubyCommand.Argument(name: "remote_name", value: remoteName)])
@@ -3625,7 +3714,8 @@ func githubApi(serverUrl: String = "https://api.github.com",
3625
3714
  url: String? = nil,
3626
3715
  errorHandlers: [String: Any] = [:],
3627
3716
  headers: [String: Any] = [:],
3628
- secure: Bool = true) {
3717
+ secure: Bool = true)
3718
+ {
3629
3719
  let command = RubyCommand(commandID: "", methodName: "github_api", className: nil, args: [RubyCommand.Argument(name: "server_url", value: serverUrl),
3630
3720
  RubyCommand.Argument(name: "api_token", value: apiToken),
3631
3721
  RubyCommand.Argument(name: "http_method", value: httpMethod),
@@ -3663,7 +3753,8 @@ func googlePlayTrackReleaseNames(packageName: String,
3663
3753
  jsonKey: String? = nil,
3664
3754
  jsonKeyData: String? = nil,
3665
3755
  rootUrl: String? = nil,
3666
- timeout: Int = 300) {
3756
+ timeout: Int = 300)
3757
+ {
3667
3758
  let command = RubyCommand(commandID: "", methodName: "google_play_track_release_names", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
3668
3759
  RubyCommand.Argument(name: "track", value: track),
3669
3760
  RubyCommand.Argument(name: "key", value: key),
@@ -3699,7 +3790,8 @@ func googlePlayTrackVersionCodes(packageName: String,
3699
3790
  jsonKey: String? = nil,
3700
3791
  jsonKeyData: String? = nil,
3701
3792
  rootUrl: String? = nil,
3702
- timeout: Int = 300) {
3793
+ timeout: Int = 300)
3794
+ {
3703
3795
  let command = RubyCommand(commandID: "", methodName: "google_play_track_version_codes", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
3704
3796
  RubyCommand.Argument(name: "track", value: track),
3705
3797
  RubyCommand.Argument(name: "key", value: key),
@@ -3743,7 +3835,8 @@ func gradle(task: String? = nil,
3743
3835
  systemProperties: Any? = nil,
3744
3836
  serial: String = "",
3745
3837
  printCommand: Bool = true,
3746
- printCommandOutput: Bool = true) {
3838
+ printCommandOutput: Bool = true)
3839
+ {
3747
3840
  let command = RubyCommand(commandID: "", methodName: "gradle", className: nil, args: [RubyCommand.Argument(name: "task", value: task),
3748
3841
  RubyCommand.Argument(name: "flavor", value: flavor),
3749
3842
  RubyCommand.Argument(name: "build_type", value: buildType),
@@ -3855,7 +3948,8 @@ func gym(workspace: Any? = gymfile.workspace,
3855
3948
  analyzeBuildTime: Bool? = gymfile.analyzeBuildTime,
3856
3949
  xcprettyUtf: Bool? = gymfile.xcprettyUtf,
3857
3950
  skipProfileDetection: Bool = gymfile.skipProfileDetection,
3858
- clonedSourcePackagesPath: Any? = gymfile.clonedSourcePackagesPath) {
3951
+ clonedSourcePackagesPath: Any? = gymfile.clonedSourcePackagesPath)
3952
+ {
3859
3953
  let command = RubyCommand(commandID: "", methodName: "gym", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
3860
3954
  RubyCommand.Argument(name: "project", value: project),
3861
3955
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -3937,7 +4031,8 @@ func hgCommitVersionBump(message: String = "Version Bump",
3937
4031
  xcodeproj: String? = nil,
3938
4032
  force: Bool = false,
3939
4033
  testDirtyFiles: String = "file1, file2",
3940
- testExpectedFiles: String = "file1, file2") {
4034
+ testExpectedFiles: String = "file1, file2")
4035
+ {
3941
4036
  let command = RubyCommand(commandID: "", methodName: "hg_commit_version_bump", className: nil, args: [RubyCommand.Argument(name: "message", value: message),
3942
4037
  RubyCommand.Argument(name: "xcodeproj", value: xcodeproj),
3943
4038
  RubyCommand.Argument(name: "force", value: force),
@@ -3966,7 +4061,8 @@ func hgEnsureCleanStatus() {
3966
4061
  The mercurial equivalent of [push_to_git_remote](https://docs.fastlane.tools/actions/push_to_git_remote/). Pushes your local commits to a remote mercurial repo. Useful when local changes such as adding a version bump commit or adding a tag are part of your lane’s actions.
3967
4062
  */
3968
4063
  func hgPush(force: Bool = false,
3969
- destination: String = "") {
4064
+ destination: String = "")
4065
+ {
3970
4066
  let command = RubyCommand(commandID: "", methodName: "hg_push", className: nil, args: [RubyCommand.Argument(name: "force", value: force),
3971
4067
  RubyCommand.Argument(name: "destination", value: destination)])
3972
4068
  _ = runner.executeCommand(command)
@@ -4000,7 +4096,8 @@ func hipchat(message: String = "",
4000
4096
  apiHost: String = "api.hipchat.com",
4001
4097
  messageFormat: String = "html",
4002
4098
  includeHtmlHeader: Bool = true,
4003
- from: String = "fastlane") {
4099
+ from: String = "fastlane")
4100
+ {
4004
4101
  let command = RubyCommand(commandID: "", methodName: "hipchat", className: nil, args: [RubyCommand.Argument(name: "message", value: message),
4005
4102
  RubyCommand.Argument(name: "channel", value: channel),
4006
4103
  RubyCommand.Argument(name: "api_token", value: apiToken),
@@ -4079,7 +4176,8 @@ func hockey(apk: String? = nil,
4079
4176
  strategy: String = "add",
4080
4177
  timeout: Int? = nil,
4081
4178
  bypassCdn: Bool = false,
4082
- dsaSignature: String = "") {
4179
+ dsaSignature: String = "")
4180
+ {
4083
4181
  let command = RubyCommand(commandID: "", methodName: "hockey", className: nil, args: [RubyCommand.Argument(name: "apk", value: apk),
4084
4182
  RubyCommand.Argument(name: "api_token", value: apiToken),
4085
4183
  RubyCommand.Argument(name: "ipa", value: ipa),
@@ -4126,7 +4224,8 @@ func ifttt(apiKey: String,
4126
4224
  eventName: String,
4127
4225
  value1: String? = nil,
4128
4226
  value2: String? = nil,
4129
- value3: String? = nil) {
4227
+ value3: String? = nil)
4228
+ {
4130
4229
  let command = RubyCommand(commandID: "", methodName: "ifttt", className: nil, args: [RubyCommand.Argument(name: "api_key", value: apiKey),
4131
4230
  RubyCommand.Argument(name: "event_name", value: eventName),
4132
4231
  RubyCommand.Argument(name: "value1", value: value1),
@@ -4153,7 +4252,8 @@ func importCertificate(certificatePath: String,
4153
4252
  keychainName: String,
4154
4253
  keychainPath: String? = nil,
4155
4254
  keychainPassword: String? = nil,
4156
- logOutput: Bool = false) {
4255
+ logOutput: Bool = false)
4256
+ {
4157
4257
  let command = RubyCommand(commandID: "", methodName: "import_certificate", className: nil, args: [RubyCommand.Argument(name: "certificate_path", value: certificatePath),
4158
4258
  RubyCommand.Argument(name: "certificate_password", value: certificatePassword),
4159
4259
  RubyCommand.Argument(name: "keychain_name", value: keychainName),
@@ -4173,7 +4273,8 @@ func importCertificate(certificatePath: String,
4173
4273
  - returns: The new build number
4174
4274
  */
4175
4275
  @discardableResult func incrementBuildNumber(buildNumber: Any? = nil,
4176
- xcodeproj: String? = nil) -> String {
4276
+ xcodeproj: String? = nil) -> String
4277
+ {
4177
4278
  let command = RubyCommand(commandID: "", methodName: "increment_build_number", className: nil, args: [RubyCommand.Argument(name: "build_number", value: buildNumber),
4178
4279
  RubyCommand.Argument(name: "xcodeproj", value: xcodeproj)])
4179
4280
  return runner.executeCommand(command)
@@ -4194,7 +4295,8 @@ func importCertificate(certificatePath: String,
4194
4295
  */
4195
4296
  @discardableResult func incrementVersionNumber(bumpType: String = "bump",
4196
4297
  versionNumber: String? = nil,
4197
- xcodeproj: String? = nil) -> String {
4298
+ xcodeproj: String? = nil) -> String
4299
+ {
4198
4300
  let command = RubyCommand(commandID: "", methodName: "increment_version_number", className: nil, args: [RubyCommand.Argument(name: "bump_type", value: bumpType),
4199
4301
  RubyCommand.Argument(name: "version_number", value: versionNumber),
4200
4302
  RubyCommand.Argument(name: "xcodeproj", value: xcodeproj)])
@@ -4215,7 +4317,8 @@ func importCertificate(certificatePath: String,
4215
4317
  func installOnDevice(extra: String? = nil,
4216
4318
  deviceId: String? = nil,
4217
4319
  skipWifi: Any? = nil,
4218
- ipa: String? = nil) {
4320
+ ipa: String? = nil)
4321
+ {
4219
4322
  let command = RubyCommand(commandID: "", methodName: "install_on_device", className: nil, args: [RubyCommand.Argument(name: "extra", value: extra),
4220
4323
  RubyCommand.Argument(name: "device_id", value: deviceId),
4221
4324
  RubyCommand.Argument(name: "skip_wifi", value: skipWifi),
@@ -4245,7 +4348,8 @@ func installProvisioningProfile(path: String) {
4245
4348
  - github: GitHub repository URL for Xcode plugin
4246
4349
  */
4247
4350
  func installXcodePlugin(url: String,
4248
- github: String? = nil) {
4351
+ github: String? = nil)
4352
+ {
4249
4353
  let command = RubyCommand(commandID: "", methodName: "install_xcode_plugin", className: nil, args: [RubyCommand.Argument(name: "url", value: url),
4250
4354
  RubyCommand.Argument(name: "github", value: github)])
4251
4355
  _ = runner.executeCommand(command)
@@ -4265,7 +4369,8 @@ func installr(apiToken: String,
4265
4369
  ipa: String,
4266
4370
  notes: String? = nil,
4267
4371
  notify: String? = nil,
4268
- add: String? = nil) {
4372
+ add: String? = nil)
4373
+ {
4269
4374
  let command = RubyCommand(commandID: "", methodName: "installr", className: nil, args: [RubyCommand.Argument(name: "api_token", value: apiToken),
4270
4375
  RubyCommand.Argument(name: "ipa", value: ipa),
4271
4376
  RubyCommand.Argument(name: "notes", value: notes),
@@ -4304,7 +4409,8 @@ func ipa(workspace: String? = nil,
4304
4409
  sdk: String? = nil,
4305
4410
  ipa: String? = nil,
4306
4411
  xcconfig: String? = nil,
4307
- xcargs: String? = nil) {
4412
+ xcargs: String? = nil)
4413
+ {
4308
4414
  let command = RubyCommand(commandID: "", methodName: "ipa", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
4309
4415
  RubyCommand.Argument(name: "project", value: project),
4310
4416
  RubyCommand.Argument(name: "configuration", value: configuration),
@@ -4357,7 +4463,8 @@ func jira(url: String,
4357
4463
  username: String,
4358
4464
  password: String,
4359
4465
  ticketId: String,
4360
- commentText: String) {
4466
+ commentText: String)
4467
+ {
4361
4468
  let command = RubyCommand(commandID: "", methodName: "jira", className: nil, args: [RubyCommand.Argument(name: "url", value: url),
4362
4469
  RubyCommand.Argument(name: "context_path", value: contextPath),
4363
4470
  RubyCommand.Argument(name: "username", value: username),
@@ -4426,7 +4533,8 @@ func jira(url: String,
4426
4533
  platform: String = "ios",
4427
4534
  initialBuildNumber: Int = 1,
4428
4535
  teamId: Any? = nil,
4429
- teamName: String? = nil) -> Int {
4536
+ teamName: String? = nil) -> Int
4537
+ {
4430
4538
  let command = RubyCommand(commandID: "", methodName: "latest_testflight_build_number", className: nil, args: [RubyCommand.Argument(name: "live", value: live),
4431
4539
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
4432
4540
  RubyCommand.Argument(name: "username", value: username),
@@ -4450,7 +4558,8 @@ func jira(url: String,
4450
4558
  func lcov(projectName: String,
4451
4559
  scheme: String,
4452
4560
  arch: String = "i386",
4453
- outputDir: String = "coverage_reports") {
4561
+ outputDir: String = "coverage_reports")
4562
+ {
4454
4563
  let command = RubyCommand(commandID: "", methodName: "lcov", className: nil, args: [RubyCommand.Argument(name: "project_name", value: projectName),
4455
4564
  RubyCommand.Argument(name: "scheme", value: scheme),
4456
4565
  RubyCommand.Argument(name: "arch", value: arch),
@@ -4494,7 +4603,8 @@ func mailgun(mailgunSandboxDomain: String? = nil,
4494
4603
  templatePath: String? = nil,
4495
4604
  replyTo: String? = nil,
4496
4605
  attachment: Any? = nil,
4497
- customPlaceholders: [String: Any] = [:]) {
4606
+ customPlaceholders: [String: Any] = [:])
4607
+ {
4498
4608
  let command = RubyCommand(commandID: "", methodName: "mailgun", className: nil, args: [RubyCommand.Argument(name: "mailgun_sandbox_domain", value: mailgunSandboxDomain),
4499
4609
  RubyCommand.Argument(name: "mailgun_sandbox_postmaster", value: mailgunSandboxPostmaster),
4500
4610
  RubyCommand.Argument(name: "mailgun_apikey", value: mailgunApikey),
@@ -4524,7 +4634,8 @@ func mailgun(mailgunSandboxDomain: String? = nil,
4524
4634
  This is useful when deploying automated builds. The changelog from Jenkins lists all the commit messages since the last build.
4525
4635
  */
4526
4636
  func makeChangelogFromJenkins(fallbackChangelog: String = "",
4527
- includeCommitBody: Bool = true) {
4637
+ includeCommitBody: Bool = true)
4638
+ {
4528
4639
  let command = RubyCommand(commandID: "", methodName: "make_changelog_from_jenkins", className: nil, args: [RubyCommand.Argument(name: "fallback_changelog", value: fallbackChangelog),
4529
4640
  RubyCommand.Argument(name: "include_commit_body", value: includeCommitBody)])
4530
4641
  _ = runner.executeCommand(command)
@@ -4552,6 +4663,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4552
4663
  - cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
4553
4664
  - gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
4554
4665
  - gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64
4666
+ - gitPrivateKey: Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
4555
4667
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
4556
4668
  - googleCloudKeysFile: Path to the gc_keys.json file
4557
4669
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
@@ -4566,7 +4678,8 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4566
4678
  - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
4567
4679
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
4568
4680
  - skipDocs: Skip generation of a README.md for the created git repository
4569
- - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
4681
+ - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
4682
+ - deriveCatalystAppIdentifier: Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
4570
4683
  - 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")
4571
4684
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
4572
4685
  - 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
@@ -4593,6 +4706,7 @@ func match(type: Any = matchfile.type,
4593
4706
  cloneBranchDirectly: Bool = matchfile.cloneBranchDirectly,
4594
4707
  gitBasicAuthorization: Any? = matchfile.gitBasicAuthorization,
4595
4708
  gitBearerAuthorization: Any? = matchfile.gitBearerAuthorization,
4709
+ gitPrivateKey: Any? = matchfile.gitPrivateKey,
4596
4710
  googleCloudBucketName: Any? = matchfile.googleCloudBucketName,
4597
4711
  googleCloudKeysFile: Any? = matchfile.googleCloudKeysFile,
4598
4712
  googleCloudProjectId: Any? = matchfile.googleCloudProjectId,
@@ -4608,11 +4722,13 @@ func match(type: Any = matchfile.type,
4608
4722
  skipConfirmation: Bool = matchfile.skipConfirmation,
4609
4723
  skipDocs: Bool = matchfile.skipDocs,
4610
4724
  platform: Any = matchfile.platform,
4725
+ deriveCatalystAppIdentifier: Bool = matchfile.deriveCatalystAppIdentifier,
4611
4726
  templateName: Any? = matchfile.templateName,
4612
4727
  profileName: Any? = matchfile.profileName,
4613
4728
  failOnNameTaken: Bool = matchfile.failOnNameTaken,
4614
4729
  outputPath: Any? = matchfile.outputPath,
4615
- verbose: Bool = matchfile.verbose) {
4730
+ verbose: Bool = matchfile.verbose)
4731
+ {
4616
4732
  let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
4617
4733
  RubyCommand.Argument(name: "additional_cert_types", value: additionalCertTypes),
4618
4734
  RubyCommand.Argument(name: "readonly", value: readonly),
@@ -4631,6 +4747,7 @@ func match(type: Any = matchfile.type,
4631
4747
  RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
4632
4748
  RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
4633
4749
  RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
4750
+ RubyCommand.Argument(name: "git_private_key", value: gitPrivateKey),
4634
4751
  RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
4635
4752
  RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
4636
4753
  RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
@@ -4646,6 +4763,7 @@ func match(type: Any = matchfile.type,
4646
4763
  RubyCommand.Argument(name: "skip_confirmation", value: skipConfirmation),
4647
4764
  RubyCommand.Argument(name: "skip_docs", value: skipDocs),
4648
4765
  RubyCommand.Argument(name: "platform", value: platform),
4766
+ RubyCommand.Argument(name: "derive_catalyst_app_identifier", value: deriveCatalystAppIdentifier),
4649
4767
  RubyCommand.Argument(name: "template_name", value: templateName),
4650
4768
  RubyCommand.Argument(name: "profile_name", value: profileName),
4651
4769
  RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
@@ -4681,7 +4799,8 @@ func modifyServices(username: String,
4681
4799
  appIdentifier: String,
4682
4800
  services: [String: Any] = [:],
4683
4801
  teamId: String? = nil,
4684
- teamName: String? = nil) {
4802
+ teamName: String? = nil)
4803
+ {
4685
4804
  let command = RubyCommand(commandID: "", methodName: "modify_services", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
4686
4805
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
4687
4806
  RubyCommand.Argument(name: "services", value: services),
@@ -4728,7 +4847,8 @@ func nexusUpload(file: String,
4728
4847
  proxyUsername: String? = nil,
4729
4848
  proxyPassword: String? = nil,
4730
4849
  proxyAddress: String? = nil,
4731
- proxyPort: String? = nil) {
4850
+ proxyPort: String? = nil)
4851
+ {
4732
4852
  let command = RubyCommand(commandID: "", methodName: "nexus_upload", className: nil, args: [RubyCommand.Argument(name: "file", value: file),
4733
4853
  RubyCommand.Argument(name: "repo_id", value: repoId),
4734
4854
  RubyCommand.Argument(name: "repo_group_id", value: repoGroupId),
@@ -4767,7 +4887,8 @@ func notarize(package: String,
4767
4887
  username: String,
4768
4888
  ascProvider: String? = nil,
4769
4889
  printLog: Bool = false,
4770
- verbose: Bool = false) {
4890
+ verbose: Bool = false)
4891
+ {
4771
4892
  let command = RubyCommand(commandID: "", methodName: "notarize", className: nil, args: [RubyCommand.Argument(name: "package", value: package),
4772
4893
  RubyCommand.Argument(name: "try_early_stapling", value: tryEarlyStapling),
4773
4894
  RubyCommand.Argument(name: "bundle_id", value: bundleId),
@@ -4800,7 +4921,8 @@ func notification(title: String = "fastlane",
4800
4921
  appIcon: String? = nil,
4801
4922
  contentImage: String? = nil,
4802
4923
  open: String? = nil,
4803
- execute: String? = nil) {
4924
+ execute: String? = nil)
4925
+ {
4804
4926
  let command = RubyCommand(commandID: "", methodName: "notification", className: nil, args: [RubyCommand.Argument(name: "title", value: title),
4805
4927
  RubyCommand.Argument(name: "subtitle", value: subtitle),
4806
4928
  RubyCommand.Argument(name: "message", value: message),
@@ -4879,7 +5001,8 @@ func oclint(oclintPath: String = "oclint",
4879
5001
  enableClangStaticAnalyzer: Bool = false,
4880
5002
  enableGlobalAnalysis: Bool = false,
4881
5003
  allowDuplicatedViolations: Bool = false,
4882
- extraArg: String? = nil) {
5004
+ extraArg: String? = nil)
5005
+ {
4883
5006
  let command = RubyCommand(commandID: "", methodName: "oclint", className: nil, args: [RubyCommand.Argument(name: "oclint_path", value: oclintPath),
4884
5007
  RubyCommand.Argument(name: "compile_commands", value: compileCommands),
4885
5008
  RubyCommand.Argument(name: "select_reqex", value: selectReqex),
@@ -4924,7 +5047,8 @@ func onesignal(appId: String? = nil,
4924
5047
  androidGcmSenderId: String? = nil,
4925
5048
  apnsP12: String? = nil,
4926
5049
  apnsP12Password: String? = nil,
4927
- apnsEnv: String = "production") {
5050
+ apnsEnv: String = "production")
5051
+ {
4928
5052
  let command = RubyCommand(commandID: "", methodName: "onesignal", className: nil, args: [RubyCommand.Argument(name: "app_id", value: appId),
4929
5053
  RubyCommand.Argument(name: "auth_token", value: authToken),
4930
5054
  RubyCommand.Argument(name: "app_name", value: appName),
@@ -5002,7 +5126,8 @@ func pem(development: Bool = false,
5002
5126
  p12Password: String,
5003
5127
  pemName: String? = nil,
5004
5128
  outputPath: String = ".",
5005
- newProfile: Any? = nil) {
5129
+ newProfile: Any? = nil)
5130
+ {
5006
5131
  let command = RubyCommand(commandID: "", methodName: "pem", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
5007
5132
  RubyCommand.Argument(name: "website_push", value: websitePush),
5008
5133
  RubyCommand.Argument(name: "generate_p12", value: generateP12),
@@ -5035,10 +5160,11 @@ func pem(development: Bool = false,
5035
5160
  - betaAppDescription: Provide the 'Beta App Description' when uploading a new build
5036
5161
  - betaAppFeedbackEmail: Provide the beta app email when uploading a new build
5037
5162
  - localizedBuildInfo: Localized beta app test info for what's new
5038
- - changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
5163
+ - changelog: Provide the 'What to Test' text when uploading a new build
5039
5164
  - skipSubmission: Skip the distributing action of pilot and only upload the ipa file
5040
5165
  - skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
5041
5166
  - updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
5167
+ - distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
5042
5168
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
5043
5169
  - distributeExternal: Should the build be distributed to external testers?
5044
5170
  - notifyExternalTesters: Should notify external testers?
@@ -5076,6 +5202,7 @@ func pilot(username: String,
5076
5202
  skipSubmission: Bool = false,
5077
5203
  skipWaitingForBuildProcessing: Bool = false,
5078
5204
  updateBuildInfoOnUpload: Bool = false,
5205
+ distributeOnly: Bool = false,
5079
5206
  usesNonExemptEncryption: Bool = false,
5080
5207
  distributeExternal: Bool = false,
5081
5208
  notifyExternalTesters: Bool = true,
@@ -5093,7 +5220,8 @@ func pilot(username: String,
5093
5220
  itcProvider: String? = nil,
5094
5221
  waitProcessingInterval: Int = 30,
5095
5222
  waitForUploadedBuild: Bool = false,
5096
- rejectBuildWaitingForReview: Bool = false) {
5223
+ rejectBuildWaitingForReview: Bool = false)
5224
+ {
5097
5225
  let command = RubyCommand(commandID: "", methodName: "pilot", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
5098
5226
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
5099
5227
  RubyCommand.Argument(name: "app_platform", value: appPlatform),
@@ -5109,6 +5237,7 @@ func pilot(username: String,
5109
5237
  RubyCommand.Argument(name: "skip_submission", value: skipSubmission),
5110
5238
  RubyCommand.Argument(name: "skip_waiting_for_build_processing", value: skipWaitingForBuildProcessing),
5111
5239
  RubyCommand.Argument(name: "update_build_info_on_upload", value: updateBuildInfoOnUpload),
5240
+ RubyCommand.Argument(name: "distribute_only", value: distributeOnly),
5112
5241
  RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
5113
5242
  RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
5114
5243
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
@@ -5140,7 +5269,8 @@ func pilot(username: String,
5140
5269
  */
5141
5270
  func pluginScores(outputPath: String,
5142
5271
  templatePath: String,
5143
- cachePath: String) {
5272
+ cachePath: String)
5273
+ {
5144
5274
  let command = RubyCommand(commandID: "", methodName: "plugin_scores", className: nil, args: [RubyCommand.Argument(name: "output_path", value: outputPath),
5145
5275
  RubyCommand.Argument(name: "template_path", value: templatePath),
5146
5276
  RubyCommand.Argument(name: "cache_path", value: cachePath)])
@@ -5193,7 +5323,8 @@ func podLibLint(useBundleExec: Bool = true,
5193
5323
  platforms: String? = nil,
5194
5324
  skipImportValidation: Bool = false,
5195
5325
  skipTests: Bool = false,
5196
- analyze: Bool = false) {
5326
+ analyze: Bool = false)
5327
+ {
5197
5328
  let command = RubyCommand(commandID: "", methodName: "pod_lib_lint", className: nil, args: [RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
5198
5329
  RubyCommand.Argument(name: "podspec", value: podspec),
5199
5330
  RubyCommand.Argument(name: "verbose", value: verbose),
@@ -5245,7 +5376,8 @@ func podPush(useBundleExec: Bool = false,
5245
5376
  skipTests: Bool? = nil,
5246
5377
  verbose: Bool = false,
5247
5378
  useModularHeaders: Bool? = nil,
5248
- synchronous: Bool? = nil) {
5379
+ synchronous: Bool? = nil)
5380
+ {
5249
5381
  let command = RubyCommand(commandID: "", methodName: "pod_push", className: nil, args: [RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
5250
5382
  RubyCommand.Argument(name: "path", value: path),
5251
5383
  RubyCommand.Argument(name: "repo", value: repo),
@@ -5283,7 +5415,8 @@ func podioItem(clientId: String,
5283
5415
  appToken: String,
5284
5416
  identifyingField: String,
5285
5417
  identifyingValue: String,
5286
- otherFields: [String: Any]? = nil) {
5418
+ otherFields: [String: Any]? = nil)
5419
+ {
5287
5420
  let command = RubyCommand(commandID: "", methodName: "podio_item", className: nil, args: [RubyCommand.Argument(name: "client_id", value: clientId),
5288
5421
  RubyCommand.Argument(name: "client_secret", value: clientSecret),
5289
5422
  RubyCommand.Argument(name: "app_id", value: appId),
@@ -5316,7 +5449,8 @@ func precheck(appIdentifier: Any = precheckfile.appIdentifier,
5316
5449
  teamName: Any? = precheckfile.teamName,
5317
5450
  defaultRuleLevel: Any = precheckfile.defaultRuleLevel,
5318
5451
  includeInAppPurchases: Bool = precheckfile.includeInAppPurchases,
5319
- freeStuffInIap: Any? = precheckfile.freeStuffInIap) {
5452
+ freeStuffInIap: Any? = precheckfile.freeStuffInIap)
5453
+ {
5320
5454
  let command = RubyCommand(commandID: "", methodName: "precheck", className: nil, args: [RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
5321
5455
  RubyCommand.Argument(name: "username", value: username),
5322
5456
  RubyCommand.Argument(name: "team_id", value: teamId),
@@ -5383,7 +5517,8 @@ func produce(username: String,
5383
5517
  teamId: String? = nil,
5384
5518
  teamName: String? = nil,
5385
5519
  itcTeamId: Any? = nil,
5386
- itcTeamName: String? = nil) {
5520
+ itcTeamName: String? = nil)
5521
+ {
5387
5522
  let command = RubyCommand(commandID: "", methodName: "produce", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
5388
5523
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
5389
5524
  RubyCommand.Argument(name: "bundle_identifier_suffix", value: bundleIdentifierSuffix),
@@ -5424,7 +5559,8 @@ func produce(username: String,
5424
5559
  ciInput: String = "",
5425
5560
  boolean: Bool = false,
5426
5561
  secureText: Bool = false,
5427
- multiLineEndKeyword: String? = nil) -> String {
5562
+ multiLineEndKeyword: String? = nil) -> String
5563
+ {
5428
5564
  let command = RubyCommand(commandID: "", methodName: "prompt", className: nil, args: [RubyCommand.Argument(name: "text", value: text),
5429
5565
  RubyCommand.Argument(name: "ci_input", value: ciInput),
5430
5566
  RubyCommand.Argument(name: "boolean", value: boolean),
@@ -5445,7 +5581,8 @@ func produce(username: String,
5445
5581
  */
5446
5582
  func pushGitTags(force: Bool = false,
5447
5583
  remote: String = "origin",
5448
- tag: String? = nil) {
5584
+ tag: String? = nil)
5585
+ {
5449
5586
  let command = RubyCommand(commandID: "", methodName: "push_git_tags", className: nil, args: [RubyCommand.Argument(name: "force", value: force),
5450
5587
  RubyCommand.Argument(name: "remote", value: remote),
5451
5588
  RubyCommand.Argument(name: "tag", value: tag)])
@@ -5475,7 +5612,8 @@ func pushToGitRemote(localBranch: String? = nil,
5475
5612
  tags: Bool = true,
5476
5613
  remote: String = "origin",
5477
5614
  noVerify: Bool = false,
5478
- setUpstream: Bool = false) {
5615
+ setUpstream: Bool = false)
5616
+ {
5479
5617
  let command = RubyCommand(commandID: "", methodName: "push_to_git_remote", className: nil, args: [RubyCommand.Argument(name: "local_branch", value: localBranch),
5480
5618
  RubyCommand.Argument(name: "remote_branch", value: remoteBranch),
5481
5619
  RubyCommand.Argument(name: "force", value: force),
@@ -5540,7 +5678,8 @@ func recreateSchemes(project: String) {
5540
5678
  udid: String,
5541
5679
  teamId: String? = nil,
5542
5680
  teamName: String? = nil,
5543
- username: String) -> String {
5681
+ username: String) -> String
5682
+ {
5544
5683
  let command = RubyCommand(commandID: "", methodName: "register_device", className: nil, args: [RubyCommand.Argument(name: "name", value: name),
5545
5684
  RubyCommand.Argument(name: "udid", value: udid),
5546
5685
  RubyCommand.Argument(name: "team_id", value: teamId),
@@ -5569,7 +5708,8 @@ func registerDevices(devices: [String: Any]? = nil,
5569
5708
  teamId: String? = nil,
5570
5709
  teamName: String? = nil,
5571
5710
  username: String,
5572
- platform: String = "ios") {
5711
+ platform: String = "ios")
5712
+ {
5573
5713
  let command = RubyCommand(commandID: "", methodName: "register_devices", className: nil, args: [RubyCommand.Argument(name: "devices", value: devices),
5574
5714
  RubyCommand.Argument(name: "devices_file", value: devicesFile),
5575
5715
  RubyCommand.Argument(name: "team_id", value: teamId),
@@ -5600,7 +5740,8 @@ func resetGitRepo(files: Any? = nil,
5600
5740
  force: Bool = false,
5601
5741
  skipClean: Bool = false,
5602
5742
  disregardGitignore: Bool = true,
5603
- exclude: Any? = nil) {
5743
+ exclude: Any? = nil)
5744
+ {
5604
5745
  let command = RubyCommand(commandID: "", methodName: "reset_git_repo", className: nil, args: [RubyCommand.Argument(name: "files", value: files),
5605
5746
  RubyCommand.Argument(name: "force", value: force),
5606
5747
  RubyCommand.Argument(name: "skip_clean", value: skipClean),
@@ -5617,7 +5758,8 @@ func resetGitRepo(files: Any? = nil,
5617
5758
  - osVersions: Which OS versions of Simulators you want to reset content and settings, this does not remove/recreate the simulators
5618
5759
  */
5619
5760
  func resetSimulatorContents(ios: [String]? = nil,
5620
- osVersions: [String]? = nil) {
5761
+ osVersions: [String]? = nil)
5762
+ {
5621
5763
  let command = RubyCommand(commandID: "", methodName: "reset_simulator_contents", className: nil, args: [RubyCommand.Argument(name: "ios", value: ios),
5622
5764
  RubyCommand.Argument(name: "os_versions", value: osVersions)])
5623
5765
  _ = runner.executeCommand(command)
@@ -5649,7 +5791,8 @@ func resign(ipa: String,
5649
5791
  bundleVersion: String? = nil,
5650
5792
  bundleId: String? = nil,
5651
5793
  useAppEntitlements: Any? = nil,
5652
- keychainPath: String? = nil) {
5794
+ keychainPath: String? = nil)
5795
+ {
5653
5796
  let command = RubyCommand(commandID: "", methodName: "resign", className: nil, args: [RubyCommand.Argument(name: "ipa", value: ipa),
5654
5797
  RubyCommand.Argument(name: "signing_identity", value: signingIdentity),
5655
5798
  RubyCommand.Argument(name: "entitlements", value: entitlements),
@@ -5704,7 +5847,8 @@ func rspec() {
5704
5847
  */
5705
5848
  func rsync(extra: String = "-av",
5706
5849
  source: String,
5707
- destination: String) {
5850
+ destination: String)
5851
+ {
5708
5852
  let command = RubyCommand(commandID: "", methodName: "rsync", className: nil, args: [RubyCommand.Argument(name: "extra", value: extra),
5709
5853
  RubyCommand.Argument(name: "source", value: source),
5710
5854
  RubyCommand.Argument(name: "destination", value: destination)])
@@ -5862,7 +6006,8 @@ func runTests(workspace: String? = nil,
5862
6006
  customReportFileName: String? = nil,
5863
6007
  xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
5864
6008
  clonedSourcePackagesPath: String? = nil,
5865
- failBuild: Bool = true) {
6009
+ failBuild: Bool = true)
6010
+ {
5866
6011
  let command = RubyCommand(commandID: "", methodName: "run_tests", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
5867
6012
  RubyCommand.Argument(name: "project", value: project),
5868
6013
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -5969,7 +6114,8 @@ func s3(ipa: String? = nil,
5969
6114
  region: String? = nil,
5970
6115
  path: String = "v{CFBundleShortVersionString}_b{CFBundleVersion}/",
5971
6116
  source: String? = nil,
5972
- acl: String = "public_read") {
6117
+ acl: String = "public_read")
6118
+ {
5973
6119
  let command = RubyCommand(commandID: "", methodName: "s3", className: nil, args: [RubyCommand.Argument(name: "ipa", value: ipa),
5974
6120
  RubyCommand.Argument(name: "dsym", value: dsym),
5975
6121
  RubyCommand.Argument(name: "upload_metadata", value: uploadMetadata),
@@ -5997,7 +6143,8 @@ func s3(ipa: String? = nil,
5997
6143
  - mute: If say should be muted with text printed out
5998
6144
  */
5999
6145
  func say(text: Any,
6000
- mute: Bool = false) {
6146
+ mute: Bool = false)
6147
+ {
6001
6148
  let command = RubyCommand(commandID: "", methodName: "say", className: nil, args: [RubyCommand.Argument(name: "text", value: text),
6002
6149
  RubyCommand.Argument(name: "mute", value: mute)])
6003
6150
  _ = runner.executeCommand(command)
@@ -6135,7 +6282,8 @@ func scan(workspace: Any? = scanfile.workspace,
6135
6282
  customReportFileName: Any? = scanfile.customReportFileName,
6136
6283
  xcodebuildCommand: Any = scanfile.xcodebuildCommand,
6137
6284
  clonedSourcePackagesPath: Any? = scanfile.clonedSourcePackagesPath,
6138
- failBuild: Bool = scanfile.failBuild) {
6285
+ failBuild: Bool = scanfile.failBuild)
6286
+ {
6139
6287
  let command = RubyCommand(commandID: "", methodName: "scan", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
6140
6288
  RubyCommand.Argument(name: "project", value: project),
6141
6289
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -6218,7 +6366,8 @@ func scp(username: String,
6218
6366
  host: String,
6219
6367
  port: String = "22",
6220
6368
  upload: [String: Any]? = nil,
6221
- download: [String: Any]? = nil) {
6369
+ download: [String: Any]? = nil)
6370
+ {
6222
6371
  let command = RubyCommand(commandID: "", methodName: "scp", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
6223
6372
  RubyCommand.Argument(name: "password", value: password),
6224
6373
  RubyCommand.Argument(name: "host", value: host),
@@ -6276,7 +6425,8 @@ func screengrab(androidHome: Any? = screengrabfile.androidHome,
6276
6425
  exitOnTestFailure: Bool = screengrabfile.exitOnTestFailure,
6277
6426
  reinstallApp: Bool = screengrabfile.reinstallApp,
6278
6427
  useTimestampSuffix: Bool = screengrabfile.useTimestampSuffix,
6279
- adbHost: Any? = screengrabfile.adbHost) {
6428
+ adbHost: Any? = screengrabfile.adbHost)
6429
+ {
6280
6430
  let command = RubyCommand(commandID: "", methodName: "screengrab", className: nil, args: [RubyCommand.Argument(name: "android_home", value: androidHome),
6281
6431
  RubyCommand.Argument(name: "build_tools_version", value: buildToolsVersion),
6282
6432
  RubyCommand.Argument(name: "locales", value: locales),
@@ -6314,7 +6464,8 @@ func screengrab(androidHome: Any? = screengrabfile.androidHome,
6314
6464
  There is an option, `:use_hg_revision_number`, which allows to use mercurial revision number instead of hash.
6315
6465
  */
6316
6466
  func setBuildNumberRepository(useHgRevisionNumber: Bool = false,
6317
- xcodeproj: String? = nil) {
6467
+ xcodeproj: String? = nil)
6468
+ {
6318
6469
  let command = RubyCommand(commandID: "", methodName: "set_build_number_repository", className: nil, args: [RubyCommand.Argument(name: "use_hg_revision_number", value: useHgRevisionNumber),
6319
6470
  RubyCommand.Argument(name: "xcodeproj", value: xcodeproj)])
6320
6471
  _ = runner.executeCommand(command)
@@ -6342,7 +6493,8 @@ func setChangelog(appIdentifier: String,
6342
6493
  changelog: String? = nil,
6343
6494
  teamId: Any? = nil,
6344
6495
  teamName: String? = nil,
6345
- platform: String = "ios") {
6496
+ platform: String = "ios")
6497
+ {
6346
6498
  let command = RubyCommand(commandID: "", methodName: "set_changelog", className: nil, args: [RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
6347
6499
  RubyCommand.Argument(name: "username", value: username),
6348
6500
  RubyCommand.Argument(name: "version", value: version),
@@ -6384,7 +6536,8 @@ func setChangelog(appIdentifier: String,
6384
6536
  description: String? = nil,
6385
6537
  isDraft: Bool = false,
6386
6538
  isPrerelease: Bool = false,
6387
- uploadAssets: [String]? = nil) -> [String: Any] {
6539
+ uploadAssets: [String]? = nil) -> [String: Any]
6540
+ {
6388
6541
  let command = RubyCommand(commandID: "", methodName: "set_github_release", className: nil, args: [RubyCommand.Argument(name: "repository_name", value: repositoryName),
6389
6542
  RubyCommand.Argument(name: "server_url", value: serverUrl),
6390
6543
  RubyCommand.Argument(name: "api_token", value: apiToken),
@@ -6412,7 +6565,8 @@ func setInfoPlistValue(key: String,
6412
6565
  subkey: String? = nil,
6413
6566
  value: Any,
6414
6567
  path: String,
6415
- outputFileName: String? = nil) {
6568
+ outputFileName: String? = nil)
6569
+ {
6416
6570
  let command = RubyCommand(commandID: "", methodName: "set_info_plist_value", className: nil, args: [RubyCommand.Argument(name: "key", value: key),
6417
6571
  RubyCommand.Argument(name: "subkey", value: subkey),
6418
6572
  RubyCommand.Argument(name: "value", value: value),
@@ -6435,7 +6589,8 @@ func setInfoPlistValue(key: String,
6435
6589
  func setPodKey(useBundleExec: Bool = true,
6436
6590
  key: String,
6437
6591
  value: String,
6438
- project: String? = nil) {
6592
+ project: String? = nil)
6593
+ {
6439
6594
  let command = RubyCommand(commandID: "", methodName: "set_pod_key", className: nil, args: [RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
6440
6595
  RubyCommand.Argument(name: "key", value: key),
6441
6596
  RubyCommand.Argument(name: "value", value: value),
@@ -6457,7 +6612,8 @@ func setPodKey(useBundleExec: Bool = true,
6457
6612
  This action helps with CI integration. Add this to the top of your Fastfile if you use CI.
6458
6613
  */
6459
6614
  func setupCi(force: Bool = false,
6460
- provider: String? = nil) {
6615
+ provider: String? = nil)
6616
+ {
6461
6617
  let command = RubyCommand(commandID: "", methodName: "setup_ci", className: nil, args: [RubyCommand.Argument(name: "force", value: force),
6462
6618
  RubyCommand.Argument(name: "provider", value: provider)])
6463
6619
  _ = runner.executeCommand(command)
@@ -6517,7 +6673,8 @@ func setupJenkins(force: Bool = false,
6517
6673
  codeSigningIdentity: String? = nil,
6518
6674
  outputDirectory: String = "./output",
6519
6675
  derivedDataPath: String = "./derivedData",
6520
- resultBundle: Bool = true) {
6676
+ resultBundle: Bool = true)
6677
+ {
6521
6678
  let command = RubyCommand(commandID: "", methodName: "setup_jenkins", className: nil, args: [RubyCommand.Argument(name: "force", value: force),
6522
6679
  RubyCommand.Argument(name: "unlock_keychain", value: unlockKeychain),
6523
6680
  RubyCommand.Argument(name: "add_keychain_to_search_list", value: addKeychainToSearchList),
@@ -6562,7 +6719,8 @@ func setupTravis(force: Bool = false) {
6562
6719
  */
6563
6720
  @discardableResult func sh(command: String,
6564
6721
  log: Bool = true,
6565
- errorCallback: ((String) -> Void)? = nil) -> String {
6722
+ errorCallback: ((String) -> Void)? = nil) -> String
6723
+ {
6566
6724
  let command = RubyCommand(commandID: "", methodName: "sh", className: nil, args: [RubyCommand.Argument(name: "command", value: command),
6567
6725
  RubyCommand.Argument(name: "log", value: log),
6568
6726
  RubyCommand.Argument(name: "error_callback", value: errorCallback, type: .stringClosure)])
@@ -6590,7 +6748,7 @@ func setupTravis(force: Bool = false) {
6590
6748
  - filename: Filename to use for the generated provisioning profile (must include .mobileprovision)
6591
6749
  - skipFetchProfiles: Skips the verification of existing profiles which is useful if you have thousands of profiles
6592
6750
  - skipCertificateVerification: Skips the verification of the certificates for every existing profiles. This will make sure the provisioning profile can be used on the local machine
6593
- - platform: Set the provisioning profile's platform (i.e. ios, tvos)
6751
+ - platform: Set the provisioning profile's platform (i.e. ios, tvos, macos, catalyst)
6594
6752
  - readonly: Only fetch existing profile, don't generate new ones
6595
6753
  - 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")
6596
6754
  - 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
@@ -6619,7 +6777,8 @@ func sigh(adhoc: Bool = false,
6619
6777
  platform: Any = "ios",
6620
6778
  readonly: Bool = false,
6621
6779
  templateName: String? = nil,
6622
- failOnNameTaken: Bool = false) {
6780
+ failOnNameTaken: Bool = false)
6781
+ {
6623
6782
  let command = RubyCommand(commandID: "", methodName: "sigh", className: nil, args: [RubyCommand.Argument(name: "adhoc", value: adhoc),
6624
6783
  RubyCommand.Argument(name: "developer_id", value: developerId),
6625
6784
  RubyCommand.Argument(name: "development", value: development),
@@ -6686,7 +6845,8 @@ func slack(message: String? = nil,
6686
6845
  attachmentProperties: [String: Any] = [:],
6687
6846
  success: Bool = true,
6688
6847
  failOnError: Bool = true,
6689
- linkNames: Bool = false) {
6848
+ linkNames: Bool = false)
6849
+ {
6690
6850
  let command = RubyCommand(commandID: "", methodName: "slack", className: nil, args: [RubyCommand.Argument(name: "message", value: message),
6691
6851
  RubyCommand.Argument(name: "pretext", value: pretext),
6692
6852
  RubyCommand.Argument(name: "channel", value: channel),
@@ -6733,7 +6893,8 @@ func slackTrainCrash() {
6733
6893
  func slackTrainStart(distance: Int = 5,
6734
6894
  train: String = "🚝",
6735
6895
  rail: String = "=",
6736
- reverseDirection: Bool = false) {
6896
+ reverseDirection: Bool = false)
6897
+ {
6737
6898
  let command = RubyCommand(commandID: "", methodName: "slack_train_start", className: nil, args: [RubyCommand.Argument(name: "distance", value: distance),
6738
6899
  RubyCommand.Argument(name: "train", value: train),
6739
6900
  RubyCommand.Argument(name: "rail", value: rail),
@@ -6810,7 +6971,8 @@ func slather(buildDirectory: String? = nil,
6810
6971
  binaryFile: [String]? = nil,
6811
6972
  arch: String? = nil,
6812
6973
  sourceFiles: Bool = false,
6813
- decimals: Bool = false) {
6974
+ decimals: Bool = false)
6975
+ {
6814
6976
  let command = RubyCommand(commandID: "", methodName: "slather", className: nil, args: [RubyCommand.Argument(name: "build_directory", value: buildDirectory),
6815
6977
  RubyCommand.Argument(name: "proj", value: proj),
6816
6978
  RubyCommand.Argument(name: "workspace", value: workspace),
@@ -6864,6 +7026,7 @@ func slather(buildDirectory: String? = nil,
6864
7026
  - clearPreviousScreenshots: Enabling this option will automatically clear previously generated screenshots before running snapshot
6865
7027
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
6866
7028
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
7029
+ - headless: Enabling this option will prevent displaying the simulator window
6867
7030
  - overrideStatusBar: Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
6868
7031
  - localizeSimulator: Enabling this option will configure the Simulator's system language
6869
7032
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
@@ -6891,6 +7054,7 @@ func slather(buildDirectory: String? = nil,
6891
7054
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
6892
7055
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
6893
7056
  - disableXcpretty: Disable xcpretty formatting of build
7057
+ - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
6894
7058
  */
6895
7059
  func snapshot(workspace: Any? = snapshotfile.workspace,
6896
7060
  project: Any? = snapshotfile.project,
@@ -6907,6 +7071,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6907
7071
  clearPreviousScreenshots: Bool = snapshotfile.clearPreviousScreenshots,
6908
7072
  reinstallApp: Bool = snapshotfile.reinstallApp,
6909
7073
  eraseSimulator: Bool = snapshotfile.eraseSimulator,
7074
+ headless: Bool = snapshotfile.headless,
6910
7075
  overrideStatusBar: Bool = snapshotfile.overrideStatusBar,
6911
7076
  localizeSimulator: Bool = snapshotfile.localizeSimulator,
6912
7077
  darkMode: Bool? = snapshotfile.darkMode,
@@ -6933,7 +7098,9 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6933
7098
  testplan: Any? = snapshotfile.testplan,
6934
7099
  onlyTesting: Any? = snapshotfile.onlyTesting,
6935
7100
  skipTesting: Any? = snapshotfile.skipTesting,
6936
- disableXcpretty: Bool? = snapshotfile.disableXcpretty) {
7101
+ disableXcpretty: Bool? = snapshotfile.disableXcpretty,
7102
+ suppressXcodeOutput: Bool? = snapshotfile.suppressXcodeOutput)
7103
+ {
6937
7104
  let command = RubyCommand(commandID: "", methodName: "snapshot", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
6938
7105
  RubyCommand.Argument(name: "project", value: project),
6939
7106
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -6949,6 +7116,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6949
7116
  RubyCommand.Argument(name: "clear_previous_screenshots", value: clearPreviousScreenshots),
6950
7117
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
6951
7118
  RubyCommand.Argument(name: "erase_simulator", value: eraseSimulator),
7119
+ RubyCommand.Argument(name: "headless", value: headless),
6952
7120
  RubyCommand.Argument(name: "override_status_bar", value: overrideStatusBar),
6953
7121
  RubyCommand.Argument(name: "localize_simulator", value: localizeSimulator),
6954
7122
  RubyCommand.Argument(name: "dark_mode", value: darkMode),
@@ -6975,7 +7143,8 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6975
7143
  RubyCommand.Argument(name: "testplan", value: testplan),
6976
7144
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
6977
7145
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
6978
- RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty)])
7146
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty),
7147
+ RubyCommand.Argument(name: "suppress_xcode_output", value: suppressXcodeOutput)])
6979
7148
  _ = runner.executeCommand(command)
6980
7149
  }
6981
7150
 
@@ -7018,7 +7187,8 @@ func sonar(projectConfigurationPath: String? = nil,
7018
7187
  branchName: String? = nil,
7019
7188
  pullRequestBranch: String? = nil,
7020
7189
  pullRequestBase: String? = nil,
7021
- pullRequestKey: String? = nil) {
7190
+ pullRequestKey: String? = nil)
7191
+ {
7022
7192
  let command = RubyCommand(commandID: "", methodName: "sonar", className: nil, args: [RubyCommand.Argument(name: "project_configuration_path", value: projectConfigurationPath),
7023
7193
  RubyCommand.Argument(name: "project_key", value: projectKey),
7024
7194
  RubyCommand.Argument(name: "project_name", value: projectName),
@@ -7053,7 +7223,8 @@ func spaceshipLogs(latest: Bool = true,
7053
7223
  printContents: Bool = false,
7054
7224
  printPaths: Bool = false,
7055
7225
  copyToPath: String? = nil,
7056
- copyToClipboard: Bool = false) {
7226
+ copyToClipboard: Bool = false)
7227
+ {
7057
7228
  let command = RubyCommand(commandID: "", methodName: "spaceship_logs", className: nil, args: [RubyCommand.Argument(name: "latest", value: latest),
7058
7229
  RubyCommand.Argument(name: "print_contents", value: printContents),
7059
7230
  RubyCommand.Argument(name: "print_paths", value: printPaths),
@@ -7084,7 +7255,8 @@ func splunkmint(dsym: String? = nil,
7084
7255
  proxyUsername: String? = nil,
7085
7256
  proxyPassword: String? = nil,
7086
7257
  proxyAddress: String? = nil,
7087
- proxyPort: String? = nil) {
7258
+ proxyPort: String? = nil)
7259
+ {
7088
7260
  let command = RubyCommand(commandID: "", methodName: "splunkmint", className: nil, args: [RubyCommand.Argument(name: "dsym", value: dsym),
7089
7261
  RubyCommand.Argument(name: "api_key", value: apiKey),
7090
7262
  RubyCommand.Argument(name: "api_token", value: apiToken),
@@ -7119,7 +7291,8 @@ func spm(command: String = "build",
7119
7291
  disableSandbox: Bool = false,
7120
7292
  xcprettyOutput: String? = nil,
7121
7293
  xcprettyArgs: String? = nil,
7122
- verbose: Bool = false) {
7294
+ verbose: Bool = false)
7295
+ {
7123
7296
  let command = RubyCommand(commandID: "", methodName: "spm", className: nil, args: [RubyCommand.Argument(name: "command", value: command),
7124
7297
  RubyCommand.Argument(name: "build_path", value: buildPath),
7125
7298
  RubyCommand.Argument(name: "package_path", value: packagePath),
@@ -7150,7 +7323,8 @@ func ssh(username: String,
7150
7323
  host: String,
7151
7324
  port: String = "22",
7152
7325
  commands: [String]? = nil,
7153
- log: Bool = true) {
7326
+ log: Bool = true)
7327
+ {
7154
7328
  let command = RubyCommand(commandID: "", methodName: "ssh", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
7155
7329
  RubyCommand.Argument(name: "password", value: password),
7156
7330
  RubyCommand.Argument(name: "host", value: host),
@@ -7199,6 +7373,7 @@ func ssh(username: String,
7199
7373
  - obbMainFileSize: Size of 'main' expansion file in bytes
7200
7374
  - obbPatchReferencesVersion: References version of 'patch' expansion file
7201
7375
  - obbPatchFileSize: Size of 'patch' expansion file in bytes
7376
+ - ackBundleInstallationWarning: Must be set to true if the bundle installation may trigger a warning on user devices (e.g can only be downloaded over wifi). Typically this is required for bundles over 150MB
7202
7377
 
7203
7378
  More information: https://docs.fastlane.tools/actions/supply/
7204
7379
  */
@@ -7236,7 +7411,9 @@ func supply(packageName: String,
7236
7411
  obbMainReferencesVersion: String? = nil,
7237
7412
  obbMainFileSize: String? = nil,
7238
7413
  obbPatchReferencesVersion: String? = nil,
7239
- obbPatchFileSize: String? = nil) {
7414
+ obbPatchFileSize: String? = nil,
7415
+ ackBundleInstallationWarning: Bool = false)
7416
+ {
7240
7417
  let command = RubyCommand(commandID: "", methodName: "supply", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
7241
7418
  RubyCommand.Argument(name: "version_name", value: versionName),
7242
7419
  RubyCommand.Argument(name: "version_code", value: versionCode),
@@ -7271,7 +7448,8 @@ func supply(packageName: String,
7271
7448
  RubyCommand.Argument(name: "obb_main_references_version", value: obbMainReferencesVersion),
7272
7449
  RubyCommand.Argument(name: "obb_main_file_size", value: obbMainFileSize),
7273
7450
  RubyCommand.Argument(name: "obb_patch_references_version", value: obbPatchReferencesVersion),
7274
- RubyCommand.Argument(name: "obb_patch_file_size", value: obbPatchFileSize)])
7451
+ RubyCommand.Argument(name: "obb_patch_file_size", value: obbPatchFileSize),
7452
+ RubyCommand.Argument(name: "ack_bundle_installation_warning", value: ackBundleInstallationWarning)])
7275
7453
  _ = runner.executeCommand(command)
7276
7454
  }
7277
7455
 
@@ -7307,7 +7485,8 @@ func swiftlint(mode: Any = "lint",
7307
7485
  executable: String? = nil,
7308
7486
  format: Bool = false,
7309
7487
  noCache: Bool = false,
7310
- compilerLogPath: String? = nil) {
7488
+ compilerLogPath: String? = nil)
7489
+ {
7311
7490
  let command = RubyCommand(commandID: "", methodName: "swiftlint", className: nil, args: [RubyCommand.Argument(name: "mode", value: mode),
7312
7491
  RubyCommand.Argument(name: "path", value: path),
7313
7492
  RubyCommand.Argument(name: "output_file", value: outputFile),
@@ -7347,6 +7526,7 @@ func swiftlint(mode: Any = "lint",
7347
7526
  - cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
7348
7527
  - gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
7349
7528
  - gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64
7529
+ - gitPrivateKey: Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
7350
7530
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
7351
7531
  - googleCloudKeysFile: Path to the gc_keys.json file
7352
7532
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
@@ -7361,7 +7541,8 @@ func swiftlint(mode: Any = "lint",
7361
7541
  - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
7362
7542
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
7363
7543
  - skipDocs: Skip generation of a README.md for the created git repository
7364
- - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
7544
+ - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
7545
+ - deriveCatalystAppIdentifier: Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
7365
7546
  - 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")
7366
7547
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
7367
7548
  - 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
@@ -7388,6 +7569,7 @@ func syncCodeSigning(type: String = "development",
7388
7569
  cloneBranchDirectly: Bool = false,
7389
7570
  gitBasicAuthorization: String? = nil,
7390
7571
  gitBearerAuthorization: String? = nil,
7572
+ gitPrivateKey: String? = nil,
7391
7573
  googleCloudBucketName: String? = nil,
7392
7574
  googleCloudKeysFile: String? = nil,
7393
7575
  googleCloudProjectId: String? = nil,
@@ -7403,11 +7585,13 @@ func syncCodeSigning(type: String = "development",
7403
7585
  skipConfirmation: Bool = false,
7404
7586
  skipDocs: Bool = false,
7405
7587
  platform: String = "ios",
7588
+ deriveCatalystAppIdentifier: Bool = false,
7406
7589
  templateName: String? = nil,
7407
7590
  profileName: String? = nil,
7408
7591
  failOnNameTaken: Bool = false,
7409
7592
  outputPath: String? = nil,
7410
- verbose: Bool = false) {
7593
+ verbose: Bool = false)
7594
+ {
7411
7595
  let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
7412
7596
  RubyCommand.Argument(name: "additional_cert_types", value: additionalCertTypes),
7413
7597
  RubyCommand.Argument(name: "readonly", value: readonly),
@@ -7426,6 +7610,7 @@ func syncCodeSigning(type: String = "development",
7426
7610
  RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
7427
7611
  RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
7428
7612
  RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
7613
+ RubyCommand.Argument(name: "git_private_key", value: gitPrivateKey),
7429
7614
  RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
7430
7615
  RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
7431
7616
  RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
@@ -7441,6 +7626,7 @@ func syncCodeSigning(type: String = "development",
7441
7626
  RubyCommand.Argument(name: "skip_confirmation", value: skipConfirmation),
7442
7627
  RubyCommand.Argument(name: "skip_docs", value: skipDocs),
7443
7628
  RubyCommand.Argument(name: "platform", value: platform),
7629
+ RubyCommand.Argument(name: "derive_catalyst_app_identifier", value: deriveCatalystAppIdentifier),
7444
7630
  RubyCommand.Argument(name: "template_name", value: templateName),
7445
7631
  RubyCommand.Argument(name: "profile_name", value: profileName),
7446
7632
  RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
@@ -7497,7 +7683,8 @@ func testfairy(apiKey: String,
7497
7683
  notify: String = "off",
7498
7684
  options: [String] = [],
7499
7685
  custom: String = "",
7500
- timeout: Int? = nil) {
7686
+ timeout: Int? = nil)
7687
+ {
7501
7688
  let command = RubyCommand(commandID: "", methodName: "testfairy", className: nil, args: [RubyCommand.Argument(name: "api_key", value: apiKey),
7502
7689
  RubyCommand.Argument(name: "ipa", value: ipa),
7503
7690
  RubyCommand.Argument(name: "apk", value: apk),
@@ -7529,10 +7716,11 @@ func testfairy(apiKey: String,
7529
7716
  - betaAppDescription: Provide the 'Beta App Description' when uploading a new build
7530
7717
  - betaAppFeedbackEmail: Provide the beta app email when uploading a new build
7531
7718
  - localizedBuildInfo: Localized beta app test info for what's new
7532
- - changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
7719
+ - changelog: Provide the 'What to Test' text when uploading a new build
7533
7720
  - skipSubmission: Skip the distributing action of pilot and only upload the ipa file
7534
7721
  - skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
7535
7722
  - updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
7723
+ - distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
7536
7724
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
7537
7725
  - distributeExternal: Should the build be distributed to external testers?
7538
7726
  - notifyExternalTesters: Should notify external testers?
@@ -7570,6 +7758,7 @@ func testflight(username: String,
7570
7758
  skipSubmission: Bool = false,
7571
7759
  skipWaitingForBuildProcessing: Bool = false,
7572
7760
  updateBuildInfoOnUpload: Bool = false,
7761
+ distributeOnly: Bool = false,
7573
7762
  usesNonExemptEncryption: Bool = false,
7574
7763
  distributeExternal: Bool = false,
7575
7764
  notifyExternalTesters: Bool = true,
@@ -7587,7 +7776,8 @@ func testflight(username: String,
7587
7776
  itcProvider: String? = nil,
7588
7777
  waitProcessingInterval: Int = 30,
7589
7778
  waitForUploadedBuild: Bool = false,
7590
- rejectBuildWaitingForReview: Bool = false) {
7779
+ rejectBuildWaitingForReview: Bool = false)
7780
+ {
7591
7781
  let command = RubyCommand(commandID: "", methodName: "testflight", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
7592
7782
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
7593
7783
  RubyCommand.Argument(name: "app_platform", value: appPlatform),
@@ -7603,6 +7793,7 @@ func testflight(username: String,
7603
7793
  RubyCommand.Argument(name: "skip_submission", value: skipSubmission),
7604
7794
  RubyCommand.Argument(name: "skip_waiting_for_build_processing", value: skipWaitingForBuildProcessing),
7605
7795
  RubyCommand.Argument(name: "update_build_info_on_upload", value: updateBuildInfoOnUpload),
7796
+ RubyCommand.Argument(name: "distribute_only", value: distributeOnly),
7606
7797
  RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
7607
7798
  RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
7608
7799
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
@@ -7644,7 +7835,8 @@ func tryouts(appId: String,
7644
7835
  notes: String? = nil,
7645
7836
  notesPath: String? = nil,
7646
7837
  notify: Int = 1,
7647
- status: Int = 2) {
7838
+ status: Int = 2)
7839
+ {
7648
7840
  let command = RubyCommand(commandID: "", methodName: "tryouts", className: nil, args: [RubyCommand.Argument(name: "app_id", value: appId),
7649
7841
  RubyCommand.Argument(name: "api_token", value: apiToken),
7650
7842
  RubyCommand.Argument(name: "build_file", value: buildFile),
@@ -7671,7 +7863,8 @@ func twitter(consumerKey: String,
7671
7863
  consumerSecret: String,
7672
7864
  accessToken: String,
7673
7865
  accessTokenSecret: String,
7674
- message: String) {
7866
+ message: String)
7867
+ {
7675
7868
  let command = RubyCommand(commandID: "", methodName: "twitter", className: nil, args: [RubyCommand.Argument(name: "consumer_key", value: consumerKey),
7676
7869
  RubyCommand.Argument(name: "consumer_secret", value: consumerSecret),
7677
7870
  RubyCommand.Argument(name: "access_token", value: accessToken),
@@ -7703,7 +7896,8 @@ func typetalk() {
7703
7896
  func unlockKeychain(path: String = "login",
7704
7897
  password: String,
7705
7898
  addToSearchList: Bool = true,
7706
- setDefault: Bool = false) {
7899
+ setDefault: Bool = false)
7900
+ {
7707
7901
  let command = RubyCommand(commandID: "", methodName: "unlock_keychain", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
7708
7902
  RubyCommand.Argument(name: "password", value: password),
7709
7903
  RubyCommand.Argument(name: "add_to_search_list", value: addToSearchList),
@@ -7721,7 +7915,8 @@ func unlockKeychain(path: String = "login",
7721
7915
  Updates the App Group Identifiers in the given Entitlements file, so you can have app groups for the app store build and app groups for an enterprise build.
7722
7916
  */
7723
7917
  func updateAppGroupIdentifiers(entitlementsFile: String,
7724
- appGroupIdentifiers: Any) {
7918
+ appGroupIdentifiers: Any)
7919
+ {
7725
7920
  let command = RubyCommand(commandID: "", methodName: "update_app_group_identifiers", className: nil, args: [RubyCommand.Argument(name: "entitlements_file", value: entitlementsFile),
7726
7921
  RubyCommand.Argument(name: "app_group_identifiers", value: appGroupIdentifiers)])
7727
7922
  _ = runner.executeCommand(command)
@@ -7739,7 +7934,8 @@ func updateAppGroupIdentifiers(entitlementsFile: String,
7739
7934
  */
7740
7935
  func updateAppIdentifier(xcodeproj: String,
7741
7936
  plistPath: String,
7742
- appIdentifier: String) {
7937
+ appIdentifier: String)
7938
+ {
7743
7939
  let command = RubyCommand(commandID: "", methodName: "update_app_identifier", className: nil, args: [RubyCommand.Argument(name: "xcodeproj", value: xcodeproj),
7744
7940
  RubyCommand.Argument(name: "plist_path", value: plistPath),
7745
7941
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier)])
@@ -7772,7 +7968,8 @@ func updateCodeSigningSettings(path: String,
7772
7968
  codeSignIdentity: String? = nil,
7773
7969
  profileName: String? = nil,
7774
7970
  profileUuid: String? = nil,
7775
- bundleIdentifier: String? = nil) {
7971
+ bundleIdentifier: String? = nil)
7972
+ {
7776
7973
  let command = RubyCommand(commandID: "", methodName: "update_code_signing_settings", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
7777
7974
  RubyCommand.Argument(name: "use_automatic_signing", value: useAutomaticSigning),
7778
7975
  RubyCommand.Argument(name: "team_id", value: teamId),
@@ -7808,7 +8005,8 @@ func updateCodeSigningSettings(path: String,
7808
8005
  Recommended usage of the `update_fastlane` action is at the top inside of the `before_all` block, before running any other action.
7809
8006
  */
7810
8007
  func updateFastlane(noUpdate: Bool = false,
7811
- nightly: Bool = false) {
8008
+ nightly: Bool = false)
8009
+ {
7812
8010
  let command = RubyCommand(commandID: "", methodName: "update_fastlane", className: nil, args: [RubyCommand.Argument(name: "no_update", value: noUpdate),
7813
8011
  RubyCommand.Argument(name: "nightly", value: nightly)])
7814
8012
  _ = runner.executeCommand(command)
@@ -7824,7 +8022,8 @@ func updateFastlane(noUpdate: Bool = false,
7824
8022
  Updates the iCloud Container Identifiers in the given Entitlements file, so you can use different iCloud containers for different builds like Adhoc, App Store, etc.
7825
8023
  */
7826
8024
  func updateIcloudContainerIdentifiers(entitlementsFile: String,
7827
- icloudContainerIdentifiers: Any) {
8025
+ icloudContainerIdentifiers: Any)
8026
+ {
7828
8027
  let command = RubyCommand(commandID: "", methodName: "update_icloud_container_identifiers", className: nil, args: [RubyCommand.Argument(name: "entitlements_file", value: entitlementsFile),
7829
8028
  RubyCommand.Argument(name: "icloud_container_identifiers", value: icloudContainerIdentifiers)])
7830
8029
  _ = runner.executeCommand(command)
@@ -7848,7 +8047,8 @@ func updateInfoPlist(xcodeproj: String? = nil,
7848
8047
  scheme: String? = nil,
7849
8048
  appIdentifier: String? = nil,
7850
8049
  displayName: String? = nil,
7851
- block: Any? = nil) {
8050
+ block: Any? = nil)
8051
+ {
7852
8052
  let command = RubyCommand(commandID: "", methodName: "update_info_plist", className: nil, args: [RubyCommand.Argument(name: "xcodeproj", value: xcodeproj),
7853
8053
  RubyCommand.Argument(name: "plist_path", value: plistPath),
7854
8054
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -7868,7 +8068,8 @@ func updateInfoPlist(xcodeproj: String? = nil,
7868
8068
  Updates the Keychain Group Access Groups in the given Entitlements file, so you can have keychain access groups for the app store build and keychain access groups for an enterprise build.
7869
8069
  */
7870
8070
  func updateKeychainAccessGroups(entitlementsFile: String,
7871
- identifiers: Any) {
8071
+ identifiers: Any)
8072
+ {
7872
8073
  let command = RubyCommand(commandID: "", methodName: "update_keychain_access_groups", className: nil, args: [RubyCommand.Argument(name: "entitlements_file", value: entitlementsFile),
7873
8074
  RubyCommand.Argument(name: "identifiers", value: identifiers)])
7874
8075
  _ = runner.executeCommand(command)
@@ -7884,7 +8085,8 @@ func updateKeychainAccessGroups(entitlementsFile: String,
7884
8085
  This action allows you to modify any value inside any `plist` file.
7885
8086
  */
7886
8087
  func updatePlist(plistPath: String? = nil,
7887
- block: Any) {
8088
+ block: Any)
8089
+ {
7888
8090
  let command = RubyCommand(commandID: "", methodName: "update_plist", className: nil, args: [RubyCommand.Argument(name: "plist_path", value: plistPath),
7889
8091
  RubyCommand.Argument(name: "block", value: block)])
7890
8092
  _ = runner.executeCommand(command)
@@ -7900,7 +8102,8 @@ func updatePlist(plistPath: String? = nil,
7900
8102
  */
7901
8103
  func updateProjectCodeSigning(path: String,
7902
8104
  udid: String? = nil,
7903
- uuid: String) {
8105
+ uuid: String)
8106
+ {
7904
8107
  let command = RubyCommand(commandID: "", methodName: "update_project_code_signing", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
7905
8108
  RubyCommand.Argument(name: "udid", value: udid),
7906
8109
  RubyCommand.Argument(name: "uuid", value: uuid)])
@@ -7932,7 +8135,8 @@ func updateProjectProvisioning(xcodeproj: String? = nil,
7932
8135
  buildConfigurationFilter: String? = nil,
7933
8136
  buildConfiguration: Any? = nil,
7934
8137
  certificate: String = "/tmp/AppleIncRootCertificate.cer",
7935
- codeSigningIdentity: String? = nil) {
8138
+ codeSigningIdentity: String? = nil)
8139
+ {
7936
8140
  let command = RubyCommand(commandID: "", methodName: "update_project_provisioning", className: nil, args: [RubyCommand.Argument(name: "xcodeproj", value: xcodeproj),
7937
8141
  RubyCommand.Argument(name: "profile", value: profile),
7938
8142
  RubyCommand.Argument(name: "target_filter", value: targetFilter),
@@ -7955,7 +8159,8 @@ func updateProjectProvisioning(xcodeproj: String? = nil,
7955
8159
  */
7956
8160
  func updateProjectTeam(path: String,
7957
8161
  targets: [String]? = nil,
7958
- teamid: String) {
8162
+ teamid: String)
8163
+ {
7959
8164
  let command = RubyCommand(commandID: "", methodName: "update_project_team", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
7960
8165
  RubyCommand.Argument(name: "targets", value: targets),
7961
8166
  RubyCommand.Argument(name: "teamid", value: teamid)])
@@ -7980,7 +8185,8 @@ func updateUrbanAirshipConfiguration(plistPath: String,
7980
8185
  developmentAppSecret: String? = nil,
7981
8186
  productionAppKey: String? = nil,
7982
8187
  productionAppSecret: String? = nil,
7983
- detectProvisioningMode: Bool? = nil) {
8188
+ detectProvisioningMode: Bool? = nil)
8189
+ {
7984
8190
  let command = RubyCommand(commandID: "", methodName: "update_urban_airship_configuration", className: nil, args: [RubyCommand.Argument(name: "plist_path", value: plistPath),
7985
8191
  RubyCommand.Argument(name: "development_app_key", value: developmentAppKey),
7986
8192
  RubyCommand.Argument(name: "development_app_secret", value: developmentAppSecret),
@@ -8003,7 +8209,8 @@ func updateUrbanAirshipConfiguration(plistPath: String,
8003
8209
  */
8004
8210
  func updateUrlSchemes(path: String,
8005
8211
  urlSchemes: Any? = nil,
8006
- updateUrlSchemes: Any? = nil) {
8212
+ updateUrlSchemes: Any? = nil)
8213
+ {
8007
8214
  let command = RubyCommand(commandID: "", methodName: "update_url_schemes", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
8008
8215
  RubyCommand.Argument(name: "url_schemes", value: urlSchemes),
8009
8216
  RubyCommand.Argument(name: "update_url_schemes", value: updateUrlSchemes)])
@@ -8034,7 +8241,8 @@ func uploadSymbolsToCrashlytics(dsymPath: String = "./spec/fixtures/dSYM/Themoji
8034
8241
  binaryPath: String? = nil,
8035
8242
  platform: String = "ios",
8036
8243
  dsymWorkerThreads: Int = 1,
8037
- debug: Bool = false) {
8244
+ debug: Bool = false)
8245
+ {
8038
8246
  let command = RubyCommand(commandID: "", methodName: "upload_symbols_to_crashlytics", className: nil, args: [RubyCommand.Argument(name: "dsym_path", value: dsymPath),
8039
8247
  RubyCommand.Argument(name: "dsym_paths", value: dsymPaths),
8040
8248
  RubyCommand.Argument(name: "api_token", value: apiToken),
@@ -8069,7 +8277,8 @@ func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/api/0",
8069
8277
  orgSlug: String,
8070
8278
  projectSlug: String,
8071
8279
  dsymPath: String? = nil,
8072
- dsymPaths: Any? = nil) {
8280
+ dsymPaths: Any? = nil)
8281
+ {
8073
8282
  let command = RubyCommand(commandID: "", methodName: "upload_symbols_to_sentry", className: nil, args: [RubyCommand.Argument(name: "api_host", value: apiHost),
8074
8283
  RubyCommand.Argument(name: "api_key", value: apiKey),
8075
8284
  RubyCommand.Argument(name: "auth_token", value: authToken),
@@ -8185,7 +8394,7 @@ func uploadToAppStore(username: String,
8185
8394
  itcProvider: String? = nil,
8186
8395
  runPrecheckBeforeSubmit: Bool = true,
8187
8396
  precheckDefaultRuleLevel: Any = "warn",
8188
- individualMetadataItems: [String] = [],
8397
+ individualMetadataItems: [String]? = nil,
8189
8398
  appIcon: String? = nil,
8190
8399
  appleWatchAppIcon: String? = nil,
8191
8400
  copyright: String? = nil,
@@ -8211,7 +8420,8 @@ func uploadToAppStore(username: String,
8211
8420
  languages: [String]? = nil,
8212
8421
  ignoreLanguageDirectoryValidation: Bool = false,
8213
8422
  precheckIncludeInAppPurchases: Bool = true,
8214
- app: Any) {
8423
+ app: Any)
8424
+ {
8215
8425
  let command = RubyCommand(commandID: "", methodName: "upload_to_app_store", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
8216
8426
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
8217
8427
  RubyCommand.Argument(name: "app_version", value: appVersion),
@@ -8314,6 +8524,7 @@ func uploadToAppStore(username: String,
8314
8524
  - obbMainFileSize: Size of 'main' expansion file in bytes
8315
8525
  - obbPatchReferencesVersion: References version of 'patch' expansion file
8316
8526
  - obbPatchFileSize: Size of 'patch' expansion file in bytes
8527
+ - ackBundleInstallationWarning: Must be set to true if the bundle installation may trigger a warning on user devices (e.g can only be downloaded over wifi). Typically this is required for bundles over 150MB
8317
8528
 
8318
8529
  More information: https://docs.fastlane.tools/actions/supply/
8319
8530
  */
@@ -8351,7 +8562,9 @@ func uploadToPlayStore(packageName: String,
8351
8562
  obbMainReferencesVersion: String? = nil,
8352
8563
  obbMainFileSize: String? = nil,
8353
8564
  obbPatchReferencesVersion: String? = nil,
8354
- obbPatchFileSize: String? = nil) {
8565
+ obbPatchFileSize: String? = nil,
8566
+ ackBundleInstallationWarning: Bool = false)
8567
+ {
8355
8568
  let command = RubyCommand(commandID: "", methodName: "upload_to_play_store", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
8356
8569
  RubyCommand.Argument(name: "version_name", value: versionName),
8357
8570
  RubyCommand.Argument(name: "version_code", value: versionCode),
@@ -8386,7 +8599,8 @@ func uploadToPlayStore(packageName: String,
8386
8599
  RubyCommand.Argument(name: "obb_main_references_version", value: obbMainReferencesVersion),
8387
8600
  RubyCommand.Argument(name: "obb_main_file_size", value: obbMainFileSize),
8388
8601
  RubyCommand.Argument(name: "obb_patch_references_version", value: obbPatchReferencesVersion),
8389
- RubyCommand.Argument(name: "obb_patch_file_size", value: obbPatchFileSize)])
8602
+ RubyCommand.Argument(name: "obb_patch_file_size", value: obbPatchFileSize),
8603
+ RubyCommand.Argument(name: "ack_bundle_installation_warning", value: ackBundleInstallationWarning)])
8390
8604
  _ = runner.executeCommand(command)
8391
8605
  }
8392
8606
 
@@ -8416,7 +8630,8 @@ func uploadToPlayStoreInternalAppSharing(packageName: String,
8416
8630
  aab: String? = nil,
8417
8631
  aabPaths: [String]? = nil,
8418
8632
  rootUrl: String? = nil,
8419
- timeout: Int = 300) {
8633
+ timeout: Int = 300)
8634
+ {
8420
8635
  let command = RubyCommand(commandID: "", methodName: "upload_to_play_store_internal_app_sharing", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
8421
8636
  RubyCommand.Argument(name: "json_key", value: jsonKey),
8422
8637
  RubyCommand.Argument(name: "json_key_data", value: jsonKeyData),
@@ -8444,10 +8659,11 @@ func uploadToPlayStoreInternalAppSharing(packageName: String,
8444
8659
  - betaAppDescription: Provide the 'Beta App Description' when uploading a new build
8445
8660
  - betaAppFeedbackEmail: Provide the beta app email when uploading a new build
8446
8661
  - localizedBuildInfo: Localized beta app test info for what's new
8447
- - changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
8662
+ - changelog: Provide the 'What to Test' text when uploading a new build
8448
8663
  - skipSubmission: Skip the distributing action of pilot and only upload the ipa file
8449
8664
  - skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
8450
8665
  - updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
8666
+ - distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
8451
8667
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
8452
8668
  - distributeExternal: Should the build be distributed to external testers?
8453
8669
  - notifyExternalTesters: Should notify external testers?
@@ -8485,6 +8701,7 @@ func uploadToTestflight(username: String,
8485
8701
  skipSubmission: Bool = false,
8486
8702
  skipWaitingForBuildProcessing: Bool = false,
8487
8703
  updateBuildInfoOnUpload: Bool = false,
8704
+ distributeOnly: Bool = false,
8488
8705
  usesNonExemptEncryption: Bool = false,
8489
8706
  distributeExternal: Bool = false,
8490
8707
  notifyExternalTesters: Bool = true,
@@ -8502,7 +8719,8 @@ func uploadToTestflight(username: String,
8502
8719
  itcProvider: String? = nil,
8503
8720
  waitProcessingInterval: Int = 30,
8504
8721
  waitForUploadedBuild: Bool = false,
8505
- rejectBuildWaitingForReview: Bool = false) {
8722
+ rejectBuildWaitingForReview: Bool = false)
8723
+ {
8506
8724
  let command = RubyCommand(commandID: "", methodName: "upload_to_testflight", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
8507
8725
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
8508
8726
  RubyCommand.Argument(name: "app_platform", value: appPlatform),
@@ -8518,6 +8736,7 @@ func uploadToTestflight(username: String,
8518
8736
  RubyCommand.Argument(name: "skip_submission", value: skipSubmission),
8519
8737
  RubyCommand.Argument(name: "skip_waiting_for_build_processing", value: skipWaitingForBuildProcessing),
8520
8738
  RubyCommand.Argument(name: "update_build_info_on_upload", value: updateBuildInfoOnUpload),
8739
+ RubyCommand.Argument(name: "distribute_only", value: distributeOnly),
8521
8740
  RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
8522
8741
  RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
8523
8742
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
@@ -8553,7 +8772,8 @@ func uploadToTestflight(username: String,
8553
8772
  func validatePlayStoreJsonKey(jsonKey: String? = nil,
8554
8773
  jsonKeyData: String? = nil,
8555
8774
  rootUrl: String? = nil,
8556
- timeout: Int = 300) {
8775
+ timeout: Int = 300)
8776
+ {
8557
8777
  let command = RubyCommand(commandID: "", methodName: "validate_play_store_json_key", className: nil, args: [RubyCommand.Argument(name: "json_key", value: jsonKey),
8558
8778
  RubyCommand.Argument(name: "json_key_data", value: jsonKeyData),
8559
8779
  RubyCommand.Argument(name: "root_url", value: rootUrl),
@@ -8583,7 +8803,8 @@ func verifyBuild(provisioningType: String? = nil,
8583
8803
  appName: String? = nil,
8584
8804
  bundleIdentifier: String? = nil,
8585
8805
  ipaPath: String? = nil,
8586
- buildPath: String? = nil) {
8806
+ buildPath: String? = nil)
8807
+ {
8587
8808
  let command = RubyCommand(commandID: "", methodName: "verify_build", className: nil, args: [RubyCommand.Argument(name: "provisioning_type", value: provisioningType),
8588
8809
  RubyCommand.Argument(name: "provisioning_uuid", value: provisioningUuid),
8589
8810
  RubyCommand.Argument(name: "team_identifier", value: teamIdentifier),
@@ -8636,7 +8857,8 @@ func versionBumpPodspec(path: String,
8636
8857
  bumpType: String = "patch",
8637
8858
  versionNumber: String? = nil,
8638
8859
  versionAppendix: String? = nil,
8639
- requireVariablePrefix: Bool = true) {
8860
+ requireVariablePrefix: Bool = true)
8861
+ {
8640
8862
  let command = RubyCommand(commandID: "", methodName: "version_bump_podspec", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
8641
8863
  RubyCommand.Argument(name: "bump_type", value: bumpType),
8642
8864
  RubyCommand.Argument(name: "version_number", value: versionNumber),
@@ -8653,7 +8875,8 @@ func versionBumpPodspec(path: String,
8653
8875
  - requireVariablePrefix: true by default, this is used for non CocoaPods version bumps only
8654
8876
  */
8655
8877
  func versionGetPodspec(path: String,
8656
- requireVariablePrefix: Bool = true) {
8878
+ requireVariablePrefix: Bool = true)
8879
+ {
8657
8880
  let command = RubyCommand(commandID: "", methodName: "version_get_podspec", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
8658
8881
  RubyCommand.Argument(name: "require_variable_prefix", value: requireVariablePrefix)])
8659
8882
  _ = runner.executeCommand(command)
@@ -8705,7 +8928,8 @@ func xcexport() {
8705
8928
  */
8706
8929
  @discardableResult func xcodeInstall(version: String,
8707
8930
  username: String,
8708
- teamId: String? = nil) -> String {
8931
+ teamId: String? = nil) -> String
8932
+ {
8709
8933
  let command = RubyCommand(commandID: "", methodName: "xcode_install", className: nil, args: [RubyCommand.Argument(name: "version", value: version),
8710
8934
  RubyCommand.Argument(name: "username", value: username),
8711
8935
  RubyCommand.Argument(name: "team_id", value: teamId)])
@@ -8749,7 +8973,8 @@ func xcodeSelect() {
8749
8973
  password: String? = nil,
8750
8974
  targetFolder: String = "./xcs_assets",
8751
8975
  keepAllAssets: Bool = false,
8752
- trustSelfSignedCerts: Bool = true) -> [String] {
8976
+ trustSelfSignedCerts: Bool = true) -> [String]
8977
+ {
8753
8978
  let command = RubyCommand(commandID: "", methodName: "xcode_server_get_assets", className: nil, args: [RubyCommand.Argument(name: "host", value: host),
8754
8979
  RubyCommand.Argument(name: "bot_name", value: botName),
8755
8980
  RubyCommand.Argument(name: "integration_number", value: integrationNumber),
@@ -8834,7 +9059,8 @@ func xcov(workspace: String? = nil,
8834
9059
  coverallsRepoToken: String? = nil,
8835
9060
  xcconfig: String? = nil,
8836
9061
  ideFoundationPath: String = "/Applications/Xcode-11.5.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8837
- legacySupport: Bool = false) {
9062
+ legacySupport: Bool = false)
9063
+ {
8838
9064
  let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
8839
9065
  RubyCommand.Argument(name: "project", value: project),
8840
9066
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -8914,7 +9140,8 @@ func xcversion(version: String) {
8914
9140
  outputPath: String? = nil,
8915
9141
  verbose: Bool = true,
8916
9142
  password: String? = nil,
8917
- symlinks: Bool = false) -> String {
9143
+ symlinks: Bool = false) -> String
9144
+ {
8918
9145
  let command = RubyCommand(commandID: "", methodName: "zip", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
8919
9146
  RubyCommand.Argument(name: "output_path", value: outputPath),
8920
9147
  RubyCommand.Argument(name: "verbose", value: verbose),
@@ -8977,4 +9204,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
8977
9204
 
8978
9205
  // Please don't remove the lines below
8979
9206
  // They are used to detect outdated files
8980
- // FastlaneRunnerAPIVersion [0.9.77]
9207
+ // FastlaneRunnerAPIVersion [0.9.82]