fastlane 2.196.0 → 2.212.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +88 -81
  4. data/cert/lib/cert/runner.rb +19 -8
  5. data/deliver/lib/assets/ScreenshotsHelp +29 -6
  6. data/deliver/lib/deliver/app_screenshot.rb +30 -4
  7. data/deliver/lib/deliver/app_screenshot_iterator.rb +1 -1
  8. data/deliver/lib/deliver/options.rb +6 -2
  9. data/deliver/lib/deliver/runner.rb +88 -24
  10. data/deliver/lib/deliver/submit_for_review.rb +25 -3
  11. data/deliver/lib/deliver/upload_price_tier.rb +3 -1
  12. data/deliver/lib/deliver/upload_screenshots.rb +2 -2
  13. data/fastlane/lib/assets/AppfileTemplate +1 -1
  14. data/fastlane/lib/assets/AppfileTemplate.swift +1 -1
  15. data/fastlane/lib/fastlane/actions/badge.rb +1 -1
  16. data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/danger.rb +14 -0
  18. data/fastlane/lib/fastlane/actions/docs/build_app.md +5 -5
  19. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +19 -2
  20. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
  21. data/fastlane/lib/fastlane/actions/docs/run_tests.md +1 -1
  22. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -1
  23. data/fastlane/lib/fastlane/actions/download_dsyms.rb +62 -46
  24. data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +15 -4
  25. data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +1 -1
  26. data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
  27. data/fastlane/lib/fastlane/actions/get_version_number.rb +8 -3
  28. data/fastlane/lib/fastlane/actions/git_commit.rb +4 -6
  29. data/fastlane/lib/fastlane/actions/import_certificate.rb +1 -1
  30. data/fastlane/lib/fastlane/actions/notarize.rb +29 -11
  31. data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +1 -1
  32. data/fastlane/lib/fastlane/actions/pod_push.rb +19 -1
  33. data/fastlane/lib/fastlane/actions/read_podspec.rb +1 -1
  34. data/fastlane/lib/fastlane/actions/run_tests.rb +19 -9
  35. data/fastlane/lib/fastlane/actions/set_github_release.rb +11 -5
  36. data/fastlane/lib/fastlane/actions/setup_ci.rb +13 -4
  37. data/fastlane/lib/fastlane/actions/trainer.rb +49 -0
  38. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +31 -4
  39. data/fastlane/lib/fastlane/actions/update_info_plist.rb +1 -1
  40. data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +10 -1
  41. data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +1 -1
  42. data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
  43. data/fastlane/lib/fastlane/actions/xcode_install.rb +5 -1
  44. data/fastlane/lib/fastlane/actions/xcode_select.rb +1 -1
  45. data/fastlane/lib/fastlane/actions/xcodebuild.rb +8 -2
  46. data/fastlane/lib/fastlane/actions/xcodes.rb +152 -0
  47. data/fastlane/lib/fastlane/actions/xcov.rb +5 -0
  48. data/fastlane/lib/fastlane/actions/xcversion.rb +17 -7
  49. data/fastlane/lib/fastlane/cli_tools_distributor.rb +5 -0
  50. data/fastlane/lib/fastlane/commands_generator.rb +2 -1
  51. data/fastlane/lib/fastlane/documentation/docs_generator.rb +17 -12
  52. data/fastlane/lib/fastlane/fast_file.rb +18 -5
  53. data/fastlane/lib/fastlane/features.rb +3 -0
  54. data/fastlane/lib/fastlane/helper/xcodebuild_formatter_helper.rb +9 -0
  55. data/fastlane/lib/fastlane/helper/xcodes_helper.rb +28 -0
  56. data/fastlane/lib/fastlane/helper/xcversion_helper.rb +0 -9
  57. data/fastlane/lib/fastlane/lane_manager.rb +1 -1
  58. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
  59. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
  60. data/fastlane/lib/fastlane/setup/setup_ios.rb +1 -1
  61. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -1
  62. data/fastlane/lib/fastlane/swift_lane_manager.rb +11 -3
  63. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +54 -1
  64. data/fastlane/lib/fastlane/tools.rb +18 -1
  65. data/fastlane/lib/fastlane/version.rb +1 -1
  66. data/fastlane/swift/Actions.swift +1 -1
  67. data/fastlane/swift/Appfile.swift +2 -2
  68. data/fastlane/swift/ArgumentProcessor.swift +1 -1
  69. data/fastlane/swift/Atomic.swift +150 -0
  70. data/fastlane/swift/ControlCommand.swift +1 -1
  71. data/fastlane/swift/Deliverfile.swift +2 -2
  72. data/fastlane/swift/DeliverfileProtocol.swift +8 -4
  73. data/fastlane/swift/Fastlane.swift +570 -239
  74. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +30 -20
  75. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +1 -1
  76. data/fastlane/swift/Gymfile.swift +2 -2
  77. data/fastlane/swift/GymfileProtocol.swift +20 -8
  78. data/fastlane/swift/LaneFileProtocol.swift +2 -2
  79. data/fastlane/swift/MainProcess.swift +3 -3
  80. data/fastlane/swift/Matchfile.swift +2 -2
  81. data/fastlane/swift/MatchfileProtocol.swift +21 -5
  82. data/fastlane/swift/OptionalConfigValue.swift +1 -1
  83. data/fastlane/swift/Plugins.swift +1 -1
  84. data/fastlane/swift/Precheckfile.swift +2 -2
  85. data/fastlane/swift/PrecheckfileProtocol.swift +3 -3
  86. data/fastlane/swift/RubyCommand.swift +1 -1
  87. data/fastlane/swift/RubyCommandable.swift +1 -1
  88. data/fastlane/swift/Runner.swift +13 -9
  89. data/fastlane/swift/RunnerArgument.swift +1 -1
  90. data/fastlane/swift/Scanfile.swift +2 -2
  91. data/fastlane/swift/ScanfileProtocol.swift +31 -11
  92. data/fastlane/swift/Screengrabfile.swift +2 -2
  93. data/fastlane/swift/ScreengrabfileProtocol.swift +3 -3
  94. data/fastlane/swift/Snapshotfile.swift +2 -2
  95. data/fastlane/swift/SnapshotfileProtocol.swift +12 -8
  96. data/fastlane/swift/SocketClient.swift +9 -5
  97. data/fastlane/swift/SocketClientDelegateProtocol.swift +2 -2
  98. data/fastlane/swift/SocketResponse.swift +1 -1
  99. data/fastlane/swift/formatting/Brewfile.lock.json +46 -23
  100. data/fastlane/swift/main.swift +1 -1
  101. data/fastlane/swift/upgrade_manifest.json +1 -1
  102. data/fastlane_core/README.md +1 -0
  103. data/fastlane_core/lib/fastlane_core/cert_checker.rb +79 -17
  104. data/fastlane_core/lib/fastlane_core/device_manager.rb +5 -1
  105. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +10 -5
  106. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +409 -26
  107. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -0
  108. data/fastlane_core/lib/fastlane_core/project.rb +19 -2
  109. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +7 -0
  110. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +4 -2
  111. data/frameit/lib/frameit/device.rb +1 -1
  112. data/frameit/lib/frameit/device_types.rb +9 -0
  113. data/frameit/lib/frameit/editor.rb +16 -18
  114. data/frameit/lib/frameit/frame_downloader.rb +1 -1
  115. data/frameit/lib/frameit/trim_box.rb +6 -0
  116. data/gym/lib/gym/generators/build_command_generator.rb +70 -23
  117. data/gym/lib/gym/options.rb +30 -5
  118. data/match/lib/match/change_password.rb +2 -0
  119. data/match/lib/match/commands_generator.rb +2 -1
  120. data/match/lib/match/encryption/openssl.rb +1 -1
  121. data/match/lib/match/encryption.rb +3 -0
  122. data/match/lib/match/generator.rb +1 -0
  123. data/match/lib/match/importer.rb +10 -1
  124. data/match/lib/match/migrate.rb +4 -3
  125. data/match/lib/match/module.rb +54 -2
  126. data/match/lib/match/nuke.rb +114 -47
  127. data/match/lib/match/options.rb +22 -1
  128. data/match/lib/match/runner.rb +25 -6
  129. data/match/lib/match/setup.rb +1 -1
  130. data/match/lib/match/spaceship_ensure.rb +5 -2
  131. data/match/lib/match/storage/gitlab/client.rb +102 -0
  132. data/match/lib/match/storage/gitlab/secure_file.rb +65 -0
  133. data/match/lib/match/storage/gitlab_secure_files.rb +182 -0
  134. data/match/lib/match/storage/google_cloud_storage.rb +7 -6
  135. data/match/lib/match/storage/s3_storage.rb +3 -3
  136. data/match/lib/match/storage.rb +4 -0
  137. data/match/lib/match/table_printer.rb +2 -1
  138. data/match/lib/match/utils.rb +15 -2
  139. data/pem/lib/pem/manager.rb +30 -7
  140. data/pem/lib/pem/options.rb +9 -0
  141. data/pilot/lib/pilot/build_manager.rb +34 -14
  142. data/pilot/lib/pilot/options.rb +6 -1
  143. data/scan/lib/scan/detect_values.rb +6 -0
  144. data/scan/lib/scan/error_handler.rb +9 -0
  145. data/scan/lib/scan/options.rb +49 -9
  146. data/scan/lib/scan/runner.rb +171 -25
  147. data/scan/lib/scan/test_command_generator.rb +65 -5
  148. data/sigh/lib/sigh/download_all.rb +14 -2
  149. data/sigh/lib/sigh/module.rb +3 -1
  150. data/sigh/lib/sigh/options.rb +5 -0
  151. data/sigh/lib/sigh/runner.rb +12 -2
  152. data/snapshot/lib/assets/SnapshotHelper.swift +3 -3
  153. data/snapshot/lib/snapshot/latest_os_version.rb +2 -5
  154. data/snapshot/lib/snapshot/options.rb +24 -8
  155. data/snapshot/lib/snapshot/reports_generator.rb +1 -0
  156. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +10 -3
  157. data/snapshot/lib/snapshot/test_command_generator.rb +37 -2
  158. data/spaceship/lib/spaceship/client.rb +71 -40
  159. data/spaceship/lib/spaceship/commands_generator.rb +1 -1
  160. data/spaceship/lib/spaceship/connect_api/api_client.rb +10 -5
  161. data/spaceship/lib/spaceship/connect_api/models/actor.rb +26 -0
  162. data/spaceship/lib/spaceship/connect_api/models/app.rb +52 -6
  163. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +1 -0
  164. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +5 -0
  165. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +7 -0
  166. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -1
  167. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +27 -10
  168. data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -2
  169. data/spaceship/lib/spaceship/connect_api/models/build_bundle.rb +68 -0
  170. data/spaceship/lib/spaceship/connect_api/models/build_bundle_file_sizes.rb +34 -0
  171. data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +2 -1
  172. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +4 -0
  173. data/spaceship/lib/spaceship/connect_api/models/device.rb +47 -4
  174. data/spaceship/lib/spaceship/connect_api/models/profile.rb +4 -0
  175. data/spaceship/lib/spaceship/connect_api/models/resolution_center_message.rb +29 -0
  176. data/spaceship/lib/spaceship/connect_api/models/resolution_center_thread.rb +67 -0
  177. data/spaceship/lib/spaceship/connect_api/models/review_rejection.rb +19 -0
  178. data/spaceship/lib/spaceship/connect_api/models/review_submission.rb +86 -0
  179. data/spaceship/lib/spaceship/connect_api/models/review_submission_item.rb +40 -0
  180. data/spaceship/lib/spaceship/connect_api/models/user.rb +5 -0
  181. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +19 -0
  182. data/spaceship/lib/spaceship/connect_api/response.rb +23 -6
  183. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +33 -2
  184. data/spaceship/lib/spaceship/connect_api/token.rb +5 -2
  185. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +124 -8
  186. data/spaceship/lib/spaceship/connect_api.rb +9 -0
  187. data/spaceship/lib/spaceship/errors.rb +34 -0
  188. data/spaceship/lib/spaceship/globals.rb +9 -0
  189. data/spaceship/lib/spaceship/hashcash.rb +52 -0
  190. data/spaceship/lib/spaceship/portal/certificate.rb +4 -3
  191. data/spaceship/lib/spaceship/spaceauth_runner.rb +1 -1
  192. data/spaceship/lib/spaceship/tunes/app_ratings.rb +6 -6
  193. data/spaceship/lib/spaceship/tunes/iap_families.rb +1 -1
  194. data/spaceship/lib/spaceship/tunes/tunes.rb +0 -1
  195. data/spaceship/lib/spaceship/tunes/tunes_client.rb +79 -21
  196. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +11 -3
  197. data/spaceship/lib/spaceship.rb +1 -0
  198. data/supply/lib/supply/client.rb +2 -7
  199. data/supply/lib/supply/options.rb +8 -0
  200. data/supply/lib/supply/uploader.rb +6 -2
  201. data/trainer/lib/assets/junit.xml.erb +28 -0
  202. data/trainer/lib/trainer/commands_generator.rb +51 -0
  203. data/trainer/lib/trainer/junit_generator.rb +31 -0
  204. data/trainer/lib/trainer/module.rb +10 -0
  205. data/trainer/lib/trainer/options.rb +66 -0
  206. data/trainer/lib/trainer/test_parser.rb +398 -0
  207. data/trainer/lib/trainer/xcresult.rb +403 -0
  208. data/trainer/lib/trainer.rb +7 -0
  209. metadata +49 -24
  210. data/spaceship/lib/spaceship/connect_api/testflight/.testflight.rb.swp +0 -0
  211. data/spaceship/lib/spaceship/tunes/user_detail.rb +0 -15
@@ -1,5 +1,5 @@
1
1
  // Fastlane.swift
2
- // Copyright (c) 2021 FastlaneTools
2
+ // Copyright (c) 2023 FastlaneTools
3
3
 
4
4
  import Foundation
5
5
  /**
@@ -661,8 +661,9 @@ public func appledoc(input: [String],
661
661
  - skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
662
662
  - force: Skip verification of HTML preview file
663
663
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
664
- - syncScreenshots: Sync screenshots with local ones. This is currently beta optionso set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
664
+ - syncScreenshots: Sync screenshots with local ones. This is currently beta option so set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
665
665
  - submitForReview: Submit the new version for Review after uploading everything
666
+ - verifyOnly: Verifies archive with App Store Connect without uploading
666
667
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
667
668
  - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
668
669
  - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
@@ -734,6 +735,7 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
734
735
  overwriteScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
735
736
  syncScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
736
737
  submitForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
738
+ verifyOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
737
739
  rejectIfPossible: OptionalConfigValue<Bool> = .fastlaneDefault(false),
738
740
  automaticRelease: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
739
741
  autoReleaseDate: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
@@ -798,6 +800,7 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
798
800
  let overwriteScreenshotsArg = overwriteScreenshots.asRubyArgument(name: "overwrite_screenshots", type: nil)
799
801
  let syncScreenshotsArg = syncScreenshots.asRubyArgument(name: "sync_screenshots", type: nil)
800
802
  let submitForReviewArg = submitForReview.asRubyArgument(name: "submit_for_review", type: nil)
803
+ let verifyOnlyArg = verifyOnly.asRubyArgument(name: "verify_only", type: nil)
801
804
  let rejectIfPossibleArg = rejectIfPossible.asRubyArgument(name: "reject_if_possible", type: nil)
802
805
  let automaticReleaseArg = automaticRelease.asRubyArgument(name: "automatic_release", type: nil)
803
806
  let autoReleaseDateArg = autoReleaseDate.asRubyArgument(name: "auto_release_date", type: nil)
@@ -861,6 +864,7 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
861
864
  overwriteScreenshotsArg,
862
865
  syncScreenshotsArg,
863
866
  submitForReviewArg,
867
+ verifyOnlyArg,
864
868
  rejectIfPossibleArg,
865
869
  automaticReleaseArg,
866
870
  autoReleaseDateArg,
@@ -1111,7 +1115,7 @@ public func backupXcarchive(xcarchive: String,
1111
1115
  Automatically add a badge to your app icon
1112
1116
 
1113
1117
  - parameters:
1114
- - dark: Adds a dark flavored badge ontop of your icon
1118
+ - dark: Adds a dark flavored badge on top of your icon
1115
1119
  - custom: Add your custom overlay/badge image
1116
1120
  - noBadge: Hides the beta badge
1117
1121
  - shield: Add a shield to your app icon from shields.io
@@ -1313,15 +1317,18 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1313
1317
  - xcargs: Pass additional arguments to xcodebuild for the build phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
1314
1318
  - xcconfig: Use an extra XCCONFIG file to build your app
1315
1319
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
1316
- - disableXcpretty: Disable xcpretty formatting of build output
1320
+ - xcodebuildFormatter: xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
1321
+ - buildTimingSummary: Create a build timing summary
1322
+ - disableXcpretty: **DEPRECATED!** Use `xcodebuild_formatter: ''` instead - Disable xcpretty formatting of build output
1317
1323
  - xcprettyTestFormat: Use the test (RSpec style) format for build output
1318
1324
  - xcprettyFormatter: A custom xcpretty formatter to use
1319
1325
  - xcprettyReportJunit: Have xcpretty create a JUnit-style XML report at the provided path
1320
1326
  - xcprettyReportHtml: Have xcpretty create a simple HTML report at the provided path
1321
1327
  - xcprettyReportJson: Have xcpretty create a JSON compilation database at the provided path
1322
- - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
1323
1328
  - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
1329
+ - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
1324
1330
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
1331
+ - xcodebuildCommand: Allows for override of the default `xcodebuild` command
1325
1332
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1326
1333
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
1327
1334
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
@@ -1365,15 +1372,18 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1365
1372
  xcargs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1366
1373
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1367
1374
  suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1375
+ xcodebuildFormatter: String = "xcbeautify",
1376
+ buildTimingSummary: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1368
1377
  disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1369
1378
  xcprettyTestFormat: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1370
1379
  xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1371
1380
  xcprettyReportJunit: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1372
1381
  xcprettyReportHtml: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1373
1382
  xcprettyReportJson: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1374
- analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1375
1383
  xcprettyUtf: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1384
+ analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1376
1385
  skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1386
+ xcodebuildCommand: String = "xcodebuild",
1377
1387
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1378
1388
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1379
1389
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -1413,15 +1423,18 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1413
1423
  let xcargsArg = xcargs.asRubyArgument(name: "xcargs", type: nil)
1414
1424
  let xcconfigArg = xcconfig.asRubyArgument(name: "xcconfig", type: nil)
1415
1425
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
1426
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
1427
+ let buildTimingSummaryArg = buildTimingSummary.asRubyArgument(name: "build_timing_summary", type: nil)
1416
1428
  let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
1417
1429
  let xcprettyTestFormatArg = xcprettyTestFormat.asRubyArgument(name: "xcpretty_test_format", type: nil)
1418
1430
  let xcprettyFormatterArg = xcprettyFormatter.asRubyArgument(name: "xcpretty_formatter", type: nil)
1419
1431
  let xcprettyReportJunitArg = xcprettyReportJunit.asRubyArgument(name: "xcpretty_report_junit", type: nil)
1420
1432
  let xcprettyReportHtmlArg = xcprettyReportHtml.asRubyArgument(name: "xcpretty_report_html", type: nil)
1421
1433
  let xcprettyReportJsonArg = xcprettyReportJson.asRubyArgument(name: "xcpretty_report_json", type: nil)
1422
- let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
1423
1434
  let xcprettyUtfArg = xcprettyUtf.asRubyArgument(name: "xcpretty_utf", type: nil)
1435
+ let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
1424
1436
  let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
1437
+ let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
1425
1438
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
1426
1439
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
1427
1440
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
@@ -1460,15 +1473,18 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1460
1473
  xcargsArg,
1461
1474
  xcconfigArg,
1462
1475
  suppressXcodeOutputArg,
1476
+ xcodebuildFormatterArg,
1477
+ buildTimingSummaryArg,
1463
1478
  disableXcprettyArg,
1464
1479
  xcprettyTestFormatArg,
1465
1480
  xcprettyFormatterArg,
1466
1481
  xcprettyReportJunitArg,
1467
1482
  xcprettyReportHtmlArg,
1468
1483
  xcprettyReportJsonArg,
1469
- analyzeBuildTimeArg,
1470
1484
  xcprettyUtfArg,
1485
+ analyzeBuildTimeArg,
1471
1486
  skipProfileDetectionArg,
1487
+ xcodebuildCommandArg,
1472
1488
  clonedSourcePackagesPathArg,
1473
1489
  skipPackageDependenciesResolutionArg,
1474
1490
  disablePackageAutomaticUpdatesArg,
@@ -1515,15 +1531,18 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1515
1531
  - xcargs: Pass additional arguments to xcodebuild for the build phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
1516
1532
  - xcconfig: Use an extra XCCONFIG file to build your app
1517
1533
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
1518
- - disableXcpretty: Disable xcpretty formatting of build output
1534
+ - xcodebuildFormatter: xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
1535
+ - buildTimingSummary: Create a build timing summary
1536
+ - disableXcpretty: **DEPRECATED!** Use `xcodebuild_formatter: ''` instead - Disable xcpretty formatting of build output
1519
1537
  - xcprettyTestFormat: Use the test (RSpec style) format for build output
1520
1538
  - xcprettyFormatter: A custom xcpretty formatter to use
1521
1539
  - xcprettyReportJunit: Have xcpretty create a JUnit-style XML report at the provided path
1522
1540
  - xcprettyReportHtml: Have xcpretty create a simple HTML report at the provided path
1523
1541
  - xcprettyReportJson: Have xcpretty create a JSON compilation database at the provided path
1524
- - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
1525
1542
  - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
1543
+ - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
1526
1544
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
1545
+ - xcodebuildCommand: Allows for override of the default `xcodebuild` command
1527
1546
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1528
1547
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
1529
1548
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
@@ -1564,15 +1583,18 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1564
1583
  xcargs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1565
1584
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1566
1585
  suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1586
+ xcodebuildFormatter: String = "xcbeautify",
1587
+ buildTimingSummary: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1567
1588
  disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1568
1589
  xcprettyTestFormat: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1569
1590
  xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1570
1591
  xcprettyReportJunit: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1571
1592
  xcprettyReportHtml: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1572
1593
  xcprettyReportJson: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1573
- analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1574
1594
  xcprettyUtf: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1595
+ analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1575
1596
  skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1597
+ xcodebuildCommand: String = "xcodebuild",
1576
1598
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1577
1599
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1578
1600
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -1609,15 +1631,18 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1609
1631
  let xcargsArg = xcargs.asRubyArgument(name: "xcargs", type: nil)
1610
1632
  let xcconfigArg = xcconfig.asRubyArgument(name: "xcconfig", type: nil)
1611
1633
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
1634
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
1635
+ let buildTimingSummaryArg = buildTimingSummary.asRubyArgument(name: "build_timing_summary", type: nil)
1612
1636
  let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
1613
1637
  let xcprettyTestFormatArg = xcprettyTestFormat.asRubyArgument(name: "xcpretty_test_format", type: nil)
1614
1638
  let xcprettyFormatterArg = xcprettyFormatter.asRubyArgument(name: "xcpretty_formatter", type: nil)
1615
1639
  let xcprettyReportJunitArg = xcprettyReportJunit.asRubyArgument(name: "xcpretty_report_junit", type: nil)
1616
1640
  let xcprettyReportHtmlArg = xcprettyReportHtml.asRubyArgument(name: "xcpretty_report_html", type: nil)
1617
1641
  let xcprettyReportJsonArg = xcprettyReportJson.asRubyArgument(name: "xcpretty_report_json", type: nil)
1618
- let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
1619
1642
  let xcprettyUtfArg = xcprettyUtf.asRubyArgument(name: "xcpretty_utf", type: nil)
1643
+ let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
1620
1644
  let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
1645
+ let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
1621
1646
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
1622
1647
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
1623
1648
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
@@ -1653,15 +1678,18 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1653
1678
  xcargsArg,
1654
1679
  xcconfigArg,
1655
1680
  suppressXcodeOutputArg,
1681
+ xcodebuildFormatterArg,
1682
+ buildTimingSummaryArg,
1656
1683
  disableXcprettyArg,
1657
1684
  xcprettyTestFormatArg,
1658
1685
  xcprettyFormatterArg,
1659
1686
  xcprettyReportJunitArg,
1660
1687
  xcprettyReportHtmlArg,
1661
1688
  xcprettyReportJsonArg,
1662
- analyzeBuildTimeArg,
1663
1689
  xcprettyUtfArg,
1690
+ analyzeBuildTimeArg,
1664
1691
  skipProfileDetectionArg,
1692
+ xcodebuildCommandArg,
1665
1693
  clonedSourcePackagesPathArg,
1666
1694
  skipPackageDependenciesResolutionArg,
1667
1695
  disablePackageAutomaticUpdatesArg,
@@ -1709,15 +1737,18 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1709
1737
  - xcargs: Pass additional arguments to xcodebuild for the build phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
1710
1738
  - xcconfig: Use an extra XCCONFIG file to build your app
1711
1739
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
1712
- - disableXcpretty: Disable xcpretty formatting of build output
1740
+ - xcodebuildFormatter: xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
1741
+ - buildTimingSummary: Create a build timing summary
1742
+ - disableXcpretty: **DEPRECATED!** Use `xcodebuild_formatter: ''` instead - Disable xcpretty formatting of build output
1713
1743
  - xcprettyTestFormat: Use the test (RSpec style) format for build output
1714
1744
  - xcprettyFormatter: A custom xcpretty formatter to use
1715
1745
  - xcprettyReportJunit: Have xcpretty create a JUnit-style XML report at the provided path
1716
1746
  - xcprettyReportHtml: Have xcpretty create a simple HTML report at the provided path
1717
1747
  - xcprettyReportJson: Have xcpretty create a JSON compilation database at the provided path
1718
- - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
1719
1748
  - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
1749
+ - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
1720
1750
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
1751
+ - xcodebuildCommand: Allows for override of the default `xcodebuild` command
1721
1752
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1722
1753
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
1723
1754
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
@@ -1759,15 +1790,18 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1759
1790
  xcargs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1760
1791
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1761
1792
  suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1793
+ xcodebuildFormatter: String = "xcbeautify",
1794
+ buildTimingSummary: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1762
1795
  disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1763
1796
  xcprettyTestFormat: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1764
1797
  xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1765
1798
  xcprettyReportJunit: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1766
1799
  xcprettyReportHtml: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1767
1800
  xcprettyReportJson: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1768
- analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1769
1801
  xcprettyUtf: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1802
+ analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
1770
1803
  skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1804
+ xcodebuildCommand: String = "xcodebuild",
1771
1805
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1772
1806
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1773
1807
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -1805,15 +1839,18 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1805
1839
  let xcargsArg = xcargs.asRubyArgument(name: "xcargs", type: nil)
1806
1840
  let xcconfigArg = xcconfig.asRubyArgument(name: "xcconfig", type: nil)
1807
1841
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
1842
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
1843
+ let buildTimingSummaryArg = buildTimingSummary.asRubyArgument(name: "build_timing_summary", type: nil)
1808
1844
  let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
1809
1845
  let xcprettyTestFormatArg = xcprettyTestFormat.asRubyArgument(name: "xcpretty_test_format", type: nil)
1810
1846
  let xcprettyFormatterArg = xcprettyFormatter.asRubyArgument(name: "xcpretty_formatter", type: nil)
1811
1847
  let xcprettyReportJunitArg = xcprettyReportJunit.asRubyArgument(name: "xcpretty_report_junit", type: nil)
1812
1848
  let xcprettyReportHtmlArg = xcprettyReportHtml.asRubyArgument(name: "xcpretty_report_html", type: nil)
1813
1849
  let xcprettyReportJsonArg = xcprettyReportJson.asRubyArgument(name: "xcpretty_report_json", type: nil)
1814
- let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
1815
1850
  let xcprettyUtfArg = xcprettyUtf.asRubyArgument(name: "xcpretty_utf", type: nil)
1851
+ let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
1816
1852
  let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
1853
+ let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
1817
1854
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
1818
1855
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
1819
1856
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
@@ -1850,15 +1887,18 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1850
1887
  xcargsArg,
1851
1888
  xcconfigArg,
1852
1889
  suppressXcodeOutputArg,
1890
+ xcodebuildFormatterArg,
1891
+ buildTimingSummaryArg,
1853
1892
  disableXcprettyArg,
1854
1893
  xcprettyTestFormatArg,
1855
1894
  xcprettyFormatterArg,
1856
1895
  xcprettyReportJunitArg,
1857
1896
  xcprettyReportHtmlArg,
1858
1897
  xcprettyReportJsonArg,
1859
- analyzeBuildTimeArg,
1860
1898
  xcprettyUtfArg,
1899
+ analyzeBuildTimeArg,
1861
1900
  skipProfileDetectionArg,
1901
+ xcodebuildCommandArg,
1862
1902
  clonedSourcePackagesPathArg,
1863
1903
  skipPackageDependenciesResolutionArg,
1864
1904
  disablePackageAutomaticUpdatesArg,
@@ -2085,7 +2125,7 @@ public func captureAndroidScreenshots(androidHome: OptionalConfigValue<String?>
2085
2125
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
2086
2126
  - headless: Enabling this option will prevent displaying the simulator window
2087
2127
  - overrideStatusBar: Enabling this option will automatically override the status bar to show 9:41 AM, full battery, and full reception (Adjust 'SNAPSHOT_SIMULATOR_WAIT_FOR_BOOT_TIMEOUT' environment variable if override status bar is not working. Might be because simulator is not fully booted. Defaults to 10 seconds)
2088
- - overrideStatusBarArguments: Fully customize the status bar by setting each option here. See `xcrun simctl status_bar --help`
2128
+ - overrideStatusBarArguments: Fully customize the status bar by setting each option here. Requires `override_status_bar` to be set to `true`. See `xcrun simctl status_bar --help`
2089
2129
  - localizeSimulator: Enabling this option will configure the Simulator's system language
2090
2130
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
2091
2131
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
@@ -2096,7 +2136,6 @@ public func captureAndroidScreenshots(androidHome: OptionalConfigValue<String?>
2096
2136
  - clean: Should the project be cleaned before building it?
2097
2137
  - testWithoutBuilding: Test without building, requires a derived data path
2098
2138
  - configuration: The configuration to use when building the app. Defaults to 'Release'
2099
- - xcprettyArgs: Additional xcpretty arguments
2100
2139
  - sdk: The SDK that should be used for building the application
2101
2140
  - scheme: The scheme you want to use, this must be the scheme for the UI Tests
2102
2141
  - numberOfRetries: The number of times a test can fail before snapshot should stop retrying
@@ -2113,6 +2152,8 @@ public func captureAndroidScreenshots(androidHome: OptionalConfigValue<String?>
2113
2152
  - testplan: The testplan associated with the scheme that should be used for testing
2114
2153
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
2115
2154
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
2155
+ - xcodebuildFormatter: xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
2156
+ - xcprettyArgs: **DEPRECATED!** Use `xcodebuild_formatter: ''` instead - Additional xcpretty arguments
2116
2157
  - disableXcpretty: Disable xcpretty formatting of build
2117
2158
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
2118
2159
  - useSystemScm: Lets xcodebuild use system's scm configuration
@@ -2145,7 +2186,6 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2145
2186
  clean: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2146
2187
  testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
2147
2188
  configuration: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2148
- xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2149
2189
  sdk: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2150
2190
  scheme: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2151
2191
  numberOfRetries: Int = 1,
@@ -2162,6 +2202,8 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2162
2202
  testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2163
2203
  onlyTesting: Any? = nil,
2164
2204
  skipTesting: Any? = nil,
2205
+ xcodebuildFormatter: String = "xcbeautify",
2206
+ xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2165
2207
  disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
2166
2208
  suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
2167
2209
  useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false))
@@ -2194,7 +2236,6 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2194
2236
  let cleanArg = clean.asRubyArgument(name: "clean", type: nil)
2195
2237
  let testWithoutBuildingArg = testWithoutBuilding.asRubyArgument(name: "test_without_building", type: nil)
2196
2238
  let configurationArg = configuration.asRubyArgument(name: "configuration", type: nil)
2197
- let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
2198
2239
  let sdkArg = sdk.asRubyArgument(name: "sdk", type: nil)
2199
2240
  let schemeArg = scheme.asRubyArgument(name: "scheme", type: nil)
2200
2241
  let numberOfRetriesArg = RubyCommand.Argument(name: "number_of_retries", value: numberOfRetries, type: nil)
@@ -2211,6 +2252,8 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2211
2252
  let testplanArg = testplan.asRubyArgument(name: "testplan", type: nil)
2212
2253
  let onlyTestingArg = RubyCommand.Argument(name: "only_testing", value: onlyTesting, type: nil)
2213
2254
  let skipTestingArg = RubyCommand.Argument(name: "skip_testing", value: skipTesting, type: nil)
2255
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
2256
+ let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
2214
2257
  let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
2215
2258
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
2216
2259
  let useSystemScmArg = useSystemScm.asRubyArgument(name: "use_system_scm", type: nil)
@@ -2242,7 +2285,6 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2242
2285
  cleanArg,
2243
2286
  testWithoutBuildingArg,
2244
2287
  configurationArg,
2245
- xcprettyArgsArg,
2246
2288
  sdkArg,
2247
2289
  schemeArg,
2248
2290
  numberOfRetriesArg,
@@ -2259,6 +2301,8 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2259
2301
  testplanArg,
2260
2302
  onlyTestingArg,
2261
2303
  skipTestingArg,
2304
+ xcodebuildFormatterArg,
2305
+ xcprettyArgsArg,
2262
2306
  disableXcprettyArg,
2263
2307
  suppressXcodeOutputArg,
2264
2308
  useSystemScmArg]
@@ -2290,7 +2334,7 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2290
2334
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
2291
2335
  - headless: Enabling this option will prevent displaying the simulator window
2292
2336
  - overrideStatusBar: Enabling this option will automatically override the status bar to show 9:41 AM, full battery, and full reception (Adjust 'SNAPSHOT_SIMULATOR_WAIT_FOR_BOOT_TIMEOUT' environment variable if override status bar is not working. Might be because simulator is not fully booted. Defaults to 10 seconds)
2293
- - overrideStatusBarArguments: Fully customize the status bar by setting each option here. See `xcrun simctl status_bar --help`
2337
+ - overrideStatusBarArguments: Fully customize the status bar by setting each option here. Requires `override_status_bar` to be set to `true`. See `xcrun simctl status_bar --help`
2294
2338
  - localizeSimulator: Enabling this option will configure the Simulator's system language
2295
2339
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
2296
2340
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
@@ -2301,7 +2345,6 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2301
2345
  - clean: Should the project be cleaned before building it?
2302
2346
  - testWithoutBuilding: Test without building, requires a derived data path
2303
2347
  - configuration: The configuration to use when building the app. Defaults to 'Release'
2304
- - xcprettyArgs: Additional xcpretty arguments
2305
2348
  - sdk: The SDK that should be used for building the application
2306
2349
  - scheme: The scheme you want to use, this must be the scheme for the UI Tests
2307
2350
  - numberOfRetries: The number of times a test can fail before snapshot should stop retrying
@@ -2318,6 +2361,8 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2318
2361
  - testplan: The testplan associated with the scheme that should be used for testing
2319
2362
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
2320
2363
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
2364
+ - xcodebuildFormatter: xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
2365
+ - xcprettyArgs: **DEPRECATED!** Use `xcodebuild_formatter: ''` instead - Additional xcpretty arguments
2321
2366
  - disableXcpretty: Disable xcpretty formatting of build
2322
2367
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
2323
2368
  - useSystemScm: Lets xcodebuild use system's scm configuration
@@ -2350,7 +2395,6 @@ public func captureScreenshots(workspace: OptionalConfigValue<String?> = .fastla
2350
2395
  clean: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2351
2396
  testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
2352
2397
  configuration: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2353
- xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2354
2398
  sdk: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2355
2399
  scheme: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2356
2400
  numberOfRetries: Int = 1,
@@ -2367,6 +2411,8 @@ public func captureScreenshots(workspace: OptionalConfigValue<String?> = .fastla
2367
2411
  testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2368
2412
  onlyTesting: Any? = nil,
2369
2413
  skipTesting: Any? = nil,
2414
+ xcodebuildFormatter: String = "xcbeautify",
2415
+ xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2370
2416
  disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
2371
2417
  suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
2372
2418
  useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false))
@@ -2399,7 +2445,6 @@ public func captureScreenshots(workspace: OptionalConfigValue<String?> = .fastla
2399
2445
  let cleanArg = clean.asRubyArgument(name: "clean", type: nil)
2400
2446
  let testWithoutBuildingArg = testWithoutBuilding.asRubyArgument(name: "test_without_building", type: nil)
2401
2447
  let configurationArg = configuration.asRubyArgument(name: "configuration", type: nil)
2402
- let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
2403
2448
  let sdkArg = sdk.asRubyArgument(name: "sdk", type: nil)
2404
2449
  let schemeArg = scheme.asRubyArgument(name: "scheme", type: nil)
2405
2450
  let numberOfRetriesArg = RubyCommand.Argument(name: "number_of_retries", value: numberOfRetries, type: nil)
@@ -2416,6 +2461,8 @@ public func captureScreenshots(workspace: OptionalConfigValue<String?> = .fastla
2416
2461
  let testplanArg = testplan.asRubyArgument(name: "testplan", type: nil)
2417
2462
  let onlyTestingArg = RubyCommand.Argument(name: "only_testing", value: onlyTesting, type: nil)
2418
2463
  let skipTestingArg = RubyCommand.Argument(name: "skip_testing", value: skipTesting, type: nil)
2464
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
2465
+ let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
2419
2466
  let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
2420
2467
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
2421
2468
  let useSystemScmArg = useSystemScm.asRubyArgument(name: "use_system_scm", type: nil)
@@ -2447,7 +2494,6 @@ public func captureScreenshots(workspace: OptionalConfigValue<String?> = .fastla
2447
2494
  cleanArg,
2448
2495
  testWithoutBuildingArg,
2449
2496
  configurationArg,
2450
- xcprettyArgsArg,
2451
2497
  sdkArg,
2452
2498
  schemeArg,
2453
2499
  numberOfRetriesArg,
@@ -2464,6 +2510,8 @@ public func captureScreenshots(workspace: OptionalConfigValue<String?> = .fastla
2464
2510
  testplanArg,
2465
2511
  onlyTestingArg,
2466
2512
  skipTestingArg,
2513
+ xcodebuildFormatterArg,
2514
+ xcprettyArgsArg,
2467
2515
  disableXcprettyArg,
2468
2516
  suppressXcodeOutputArg,
2469
2517
  useSystemScmArg]
@@ -2669,7 +2717,7 @@ public func cert(development: OptionalConfigValue<Bool> = .fastlaneDefault(false
2669
2717
  - matchLightweightTag: Whether or not to match a lightweight tag when searching for the last one
2670
2718
  - quiet: Whether or not to disable changelog output
2671
2719
  - includeMerges: **DEPRECATED!** Use `:merge_commit_filtering` instead - Whether or not to include any commits that are merges
2672
- - mergeCommitFiltering: Controls inclusion of merge commits when collecting the changelog. Valid values: `:include_merges`, `:exclude_merges`, `:only_include_merges`
2720
+ - mergeCommitFiltering: Controls inclusion of merge commits when collecting the changelog. Valid values: 'include_merges', 'exclude_merges', 'only_include_merges'
2673
2721
 
2674
2722
  - returns: Returns a String containing your formatted git commits
2675
2723
 
@@ -3518,6 +3566,8 @@ public func createXcframework(frameworks: OptionalConfigValue<[String]?> = .fast
3518
3566
  - dangerId: The identifier of this Danger instance
3519
3567
  - dangerfile: The location of your Dangerfile
3520
3568
  - githubApiToken: GitHub API token for danger
3569
+ - githubEnterpriseHost: GitHub host URL for GitHub Enterprise
3570
+ - githubEnterpriseApiBaseUrl: GitHub API base URL for GitHub Enterprise
3521
3571
  - failOnErrors: Should always fail the build process, defaults to false
3522
3572
  - newComment: Makes Danger post a new comment instead of editing its previous one
3523
3573
  - removePreviousComments: Makes Danger remove all previous comment and create a new one in the end of the list
@@ -3534,6 +3584,8 @@ public func danger(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefault(t
3534
3584
  dangerId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3535
3585
  dangerfile: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3536
3586
  githubApiToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3587
+ githubEnterpriseHost: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3588
+ githubEnterpriseApiBaseUrl: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3537
3589
  failOnErrors: OptionalConfigValue<Bool> = .fastlaneDefault(false),
3538
3590
  newComment: OptionalConfigValue<Bool> = .fastlaneDefault(false),
3539
3591
  removePreviousComments: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -3547,6 +3599,8 @@ public func danger(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefault(t
3547
3599
  let dangerIdArg = dangerId.asRubyArgument(name: "danger_id", type: nil)
3548
3600
  let dangerfileArg = dangerfile.asRubyArgument(name: "dangerfile", type: nil)
3549
3601
  let githubApiTokenArg = githubApiToken.asRubyArgument(name: "github_api_token", type: nil)
3602
+ let githubEnterpriseHostArg = githubEnterpriseHost.asRubyArgument(name: "github_enterprise_host", type: nil)
3603
+ let githubEnterpriseApiBaseUrlArg = githubEnterpriseApiBaseUrl.asRubyArgument(name: "github_enterprise_api_base_url", type: nil)
3550
3604
  let failOnErrorsArg = failOnErrors.asRubyArgument(name: "fail_on_errors", type: nil)
3551
3605
  let newCommentArg = newComment.asRubyArgument(name: "new_comment", type: nil)
3552
3606
  let removePreviousCommentsArg = removePreviousComments.asRubyArgument(name: "remove_previous_comments", type: nil)
@@ -3559,6 +3613,8 @@ public func danger(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefault(t
3559
3613
  dangerIdArg,
3560
3614
  dangerfileArg,
3561
3615
  githubApiTokenArg,
3616
+ githubEnterpriseHostArg,
3617
+ githubEnterpriseApiBaseUrlArg,
3562
3618
  failOnErrorsArg,
3563
3619
  newCommentArg,
3564
3620
  removePreviousCommentsArg,
@@ -3637,8 +3693,9 @@ public func deleteKeychain(name: OptionalConfigValue<String?> = .fastlaneDefault
3637
3693
  - skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
3638
3694
  - force: Skip verification of HTML preview file
3639
3695
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
3640
- - syncScreenshots: Sync screenshots with local ones. This is currently beta optionso set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
3696
+ - syncScreenshots: Sync screenshots with local ones. This is currently beta option so set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
3641
3697
  - submitForReview: Submit the new version for Review after uploading everything
3698
+ - verifyOnly: Verifies archive with App Store Connect without uploading
3642
3699
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
3643
3700
  - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
3644
3701
  - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
@@ -3710,6 +3767,7 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
3710
3767
  overwriteScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.overwriteScreenshots),
3711
3768
  syncScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.syncScreenshots),
3712
3769
  submitForReview: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.submitForReview),
3770
+ verifyOnly: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.verifyOnly),
3713
3771
  rejectIfPossible: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.rejectIfPossible),
3714
3772
  automaticRelease: OptionalConfigValue<Bool?> = .fastlaneDefault(deliverfile.automaticRelease),
3715
3773
  autoReleaseDate: OptionalConfigValue<Int?> = .fastlaneDefault(deliverfile.autoReleaseDate),
@@ -3774,6 +3832,7 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
3774
3832
  let overwriteScreenshotsArg = overwriteScreenshots.asRubyArgument(name: "overwrite_screenshots", type: nil)
3775
3833
  let syncScreenshotsArg = syncScreenshots.asRubyArgument(name: "sync_screenshots", type: nil)
3776
3834
  let submitForReviewArg = submitForReview.asRubyArgument(name: "submit_for_review", type: nil)
3835
+ let verifyOnlyArg = verifyOnly.asRubyArgument(name: "verify_only", type: nil)
3777
3836
  let rejectIfPossibleArg = rejectIfPossible.asRubyArgument(name: "reject_if_possible", type: nil)
3778
3837
  let automaticReleaseArg = automaticRelease.asRubyArgument(name: "automatic_release", type: nil)
3779
3838
  let autoReleaseDateArg = autoReleaseDate.asRubyArgument(name: "auto_release_date", type: nil)
@@ -3837,6 +3896,7 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
3837
3896
  overwriteScreenshotsArg,
3838
3897
  syncScreenshotsArg,
3839
3898
  submitForReviewArg,
3899
+ verifyOnlyArg,
3840
3900
  rejectIfPossibleArg,
3841
3901
  automaticReleaseArg,
3842
3902
  autoReleaseDateArg,
@@ -4013,6 +4073,8 @@ public func downloadAppPrivacyDetailsFromAppStore(username: String,
4013
4073
  Download dSYM files from App Store Connect for Bitcode apps
4014
4074
 
4015
4075
  - parameters:
4076
+ - apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
4077
+ - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
4016
4078
  - username: Your Apple ID Username for App Store Connect
4017
4079
  - appIdentifier: The bundle identifier of your app
4018
4080
  - teamId: The ID of your App Store Connect team if you're in multiple teams
@@ -4037,7 +4099,9 @@ public func downloadAppPrivacyDetailsFromAppStore(username: String,
4037
4099
  ```|
4038
4100
  >|
4039
4101
  */
4040
- public func downloadDsyms(username: String,
4102
+ public func downloadDsyms(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4103
+ apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
4104
+ username: String,
4041
4105
  appIdentifier: String,
4042
4106
  teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4043
4107
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -4050,6 +4114,8 @@ public func downloadDsyms(username: String,
4050
4114
  waitForDsymProcessing: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4051
4115
  waitTimeout: Int = 300)
4052
4116
  {
4117
+ let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
4118
+ let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
4053
4119
  let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
4054
4120
  let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
4055
4121
  let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
@@ -4062,7 +4128,9 @@ public func downloadDsyms(username: String,
4062
4128
  let outputDirectoryArg = outputDirectory.asRubyArgument(name: "output_directory", type: nil)
4063
4129
  let waitForDsymProcessingArg = waitForDsymProcessing.asRubyArgument(name: "wait_for_dsym_processing", type: nil)
4064
4130
  let waitTimeoutArg = RubyCommand.Argument(name: "wait_timeout", value: waitTimeout, type: nil)
4065
- let array: [RubyCommand.Argument?] = [usernameArg,
4131
+ let array: [RubyCommand.Argument?] = [apiKeyPathArg,
4132
+ apiKeyArg,
4133
+ usernameArg,
4066
4134
  appIdentifierArg,
4067
4135
  teamIdArg,
4068
4136
  teamNameArg,
@@ -4231,7 +4299,7 @@ public func ensureGitBranch(branch: String = "master") {
4231
4299
  - parameters:
4232
4300
  - showUncommittedChanges: The flag whether to show uncommitted changes if the repo is dirty
4233
4301
  - showDiff: The flag whether to show the git diff if the repo is dirty
4234
- - ignored: The flag whether to ignore file the git status if the repo is dirty
4302
+ - ignored: The handling mode of the ignored files. The available options are: `'traditional'`, `'none'` (default) and `'matching'`. Specifying `'none'` to this parameter is the same as not specifying the parameter at all, which means that no ignored file will be used to check if the repo is dirty or not. Specifying `'traditional'` or `'matching'` causes some ignored files to be used to check if the repo is dirty or not (more info in the official docs: https://git-scm.com/docs/git-status#Documentation/git-status.txt---ignoredltmodegt)
4235
4303
 
4236
4304
  A sanity check to make sure you are working in a repo that is clean.
4237
4305
  Especially useful to put at the beginning of your Fastfile in the `before_all` block, if some of your other actions will touch your filesystem, do things to your git repo, or just as a general reminder to save your work.
@@ -4303,7 +4371,7 @@ public func ensureNoDebugCode(text: String,
4303
4371
 
4304
4372
  If building your app requires a specific version of Xcode, you can invoke this command before using gym.
4305
4373
  For example, to ensure that a beta version of Xcode is not accidentally selected to build, which would make uploading to TestFlight fail.
4306
- You can either manually provide a specific version using `version: ` or you make use of the `.xcode-version` file.
4374
+ You can either manually provide a specific version using `version:` or you make use of the `.xcode-version` file.
4307
4375
  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`).
4308
4376
  */
4309
4377
  public func ensureXcodeVersion(version: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -4877,6 +4945,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
4877
4945
  - development: Renew the development certificate instead of the production one
4878
4946
  - skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
4879
4947
  - force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
4948
+ - includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
4880
4949
  - appIdentifier: The bundle identifier of your app
4881
4950
  - apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
4882
4951
  - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)
@@ -4906,6 +4975,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
4906
4975
  development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4907
4976
  skipInstall: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4908
4977
  force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4978
+ includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4909
4979
  appIdentifier: String,
4910
4980
  apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4911
4981
  apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
@@ -4931,6 +5001,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
4931
5001
  let developmentArg = development.asRubyArgument(name: "development", type: nil)
4932
5002
  let skipInstallArg = skipInstall.asRubyArgument(name: "skip_install", type: nil)
4933
5003
  let forceArg = force.asRubyArgument(name: "force", type: nil)
5004
+ let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
4934
5005
  let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
4935
5006
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
4936
5007
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -4955,6 +5026,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
4955
5026
  developmentArg,
4956
5027
  skipInstallArg,
4957
5028
  forceArg,
5029
+ includeMacInProfilesArg,
4958
5030
  appIdentifierArg,
4959
5031
  apiKeyPathArg,
4960
5032
  apiKeyArg,
@@ -4985,6 +5057,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
4985
5057
  Ensure a valid push profile is active, creating a new one if needed (via _pem_)
4986
5058
 
4987
5059
  - parameters:
5060
+ - platform: Set certificate's platform. Used for creation of production & development certificates. Supported platforms: ios, macos
4988
5061
  - development: Renew the development push certificate instead of the production one
4989
5062
  - websitePush: Create a Website Push certificate
4990
5063
  - generateP12: Generate a p12 file additionally to a PEM file
@@ -5012,7 +5085,8 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
5012
5085
  ```|
5013
5086
  >|
5014
5087
  */
5015
- public func getPushCertificate(development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
5088
+ public func getPushCertificate(platform: String = "ios",
5089
+ development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
5016
5090
  websitePush: OptionalConfigValue<Bool> = .fastlaneDefault(false),
5017
5091
  generateP12: OptionalConfigValue<Bool> = .fastlaneDefault(true),
5018
5092
  activeDaysLimit: Int = 30,
@@ -5027,6 +5101,7 @@ public func getPushCertificate(development: OptionalConfigValue<Bool> = .fastlan
5027
5101
  outputPath: String = ".",
5028
5102
  newProfile: ((String) -> Void)? = nil)
5029
5103
  {
5104
+ let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
5030
5105
  let developmentArg = development.asRubyArgument(name: "development", type: nil)
5031
5106
  let websitePushArg = websitePush.asRubyArgument(name: "website_push", type: nil)
5032
5107
  let generateP12Arg = generateP12.asRubyArgument(name: "generate_p12", type: nil)
@@ -5041,7 +5116,8 @@ public func getPushCertificate(development: OptionalConfigValue<Bool> = .fastlan
5041
5116
  let pemNameArg = pemName.asRubyArgument(name: "pem_name", type: nil)
5042
5117
  let outputPathArg = RubyCommand.Argument(name: "output_path", value: outputPath, type: nil)
5043
5118
  let newProfileArg = RubyCommand.Argument(name: "new_profile", value: newProfile, type: .stringClosure)
5044
- let array: [RubyCommand.Argument?] = [developmentArg,
5119
+ let array: [RubyCommand.Argument?] = [platformArg,
5120
+ developmentArg,
5045
5121
  websitePushArg,
5046
5122
  generateP12Arg,
5047
5123
  activeDaysLimitArg,
@@ -5066,11 +5142,11 @@ public func getPushCertificate(development: OptionalConfigValue<Bool> = .fastlan
5066
5142
  Get the version number of your project
5067
5143
 
5068
5144
  - parameters:
5069
- - xcodeproj: Path to the Xcode project to read version number from, or its containing directory, optional. If ommitted, or if a directory is passed instead, it will use the first Xcode project found within the given directory, or the project root directory if none is passed
5145
+ - xcodeproj: Path to the Xcode project to read version number from, or its containing directory, optional. If omitted, or if a directory is passed instead, it will use the first Xcode project found within the given directory, or the project root directory if none is passed
5070
5146
  - target: Target name, optional. Will be needed if you have more than one non-test target to avoid being prompted to select one
5071
5147
  - configuration: Configuration name, optional. Will be needed if you have altered the configurations from the default or your version number depends on the configuration selected
5072
5148
 
5073
- This action will return the current version number set on your project.
5149
+ This action will return the current version number set on your project. It first looks in the plist and then for '$(MARKETING_VERSION)' in the build settings.
5074
5150
  */
5075
5151
  @discardableResult public func getVersionNumber(xcodeproj: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5076
5152
  target: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -5504,15 +5580,18 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5504
5580
  - xcargs: Pass additional arguments to xcodebuild for the build phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
5505
5581
  - xcconfig: Use an extra XCCONFIG file to build your app
5506
5582
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
5507
- - disableXcpretty: Disable xcpretty formatting of build output
5583
+ - xcodebuildFormatter: xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
5584
+ - buildTimingSummary: Create a build timing summary
5585
+ - disableXcpretty: **DEPRECATED!** Use `xcodebuild_formatter: ''` instead - Disable xcpretty formatting of build output
5508
5586
  - xcprettyTestFormat: Use the test (RSpec style) format for build output
5509
5587
  - xcprettyFormatter: A custom xcpretty formatter to use
5510
5588
  - xcprettyReportJunit: Have xcpretty create a JUnit-style XML report at the provided path
5511
5589
  - xcprettyReportHtml: Have xcpretty create a simple HTML report at the provided path
5512
5590
  - xcprettyReportJson: Have xcpretty create a JSON compilation database at the provided path
5513
- - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
5514
5591
  - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
5592
+ - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
5515
5593
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
5594
+ - xcodebuildCommand: Allows for override of the default `xcodebuild` command
5516
5595
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
5517
5596
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
5518
5597
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
@@ -5556,15 +5635,18 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5556
5635
  xcargs: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.xcargs),
5557
5636
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.xcconfig),
5558
5637
  suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.suppressXcodeOutput),
5638
+ xcodebuildFormatter: String = gymfile.xcodebuildFormatter,
5639
+ buildTimingSummary: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.buildTimingSummary),
5559
5640
  disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.disableXcpretty),
5560
5641
  xcprettyTestFormat: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.xcprettyTestFormat),
5561
5642
  xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.xcprettyFormatter),
5562
5643
  xcprettyReportJunit: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.xcprettyReportJunit),
5563
5644
  xcprettyReportHtml: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.xcprettyReportHtml),
5564
5645
  xcprettyReportJson: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.xcprettyReportJson),
5565
- analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.analyzeBuildTime),
5566
5646
  xcprettyUtf: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.xcprettyUtf),
5647
+ analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.analyzeBuildTime),
5567
5648
  skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.skipProfileDetection),
5649
+ xcodebuildCommand: String = gymfile.xcodebuildCommand,
5568
5650
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.clonedSourcePackagesPath),
5569
5651
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.skipPackageDependenciesResolution),
5570
5652
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.disablePackageAutomaticUpdates),
@@ -5604,15 +5686,18 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5604
5686
  let xcargsArg = xcargs.asRubyArgument(name: "xcargs", type: nil)
5605
5687
  let xcconfigArg = xcconfig.asRubyArgument(name: "xcconfig", type: nil)
5606
5688
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
5689
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
5690
+ let buildTimingSummaryArg = buildTimingSummary.asRubyArgument(name: "build_timing_summary", type: nil)
5607
5691
  let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
5608
5692
  let xcprettyTestFormatArg = xcprettyTestFormat.asRubyArgument(name: "xcpretty_test_format", type: nil)
5609
5693
  let xcprettyFormatterArg = xcprettyFormatter.asRubyArgument(name: "xcpretty_formatter", type: nil)
5610
5694
  let xcprettyReportJunitArg = xcprettyReportJunit.asRubyArgument(name: "xcpretty_report_junit", type: nil)
5611
5695
  let xcprettyReportHtmlArg = xcprettyReportHtml.asRubyArgument(name: "xcpretty_report_html", type: nil)
5612
5696
  let xcprettyReportJsonArg = xcprettyReportJson.asRubyArgument(name: "xcpretty_report_json", type: nil)
5613
- let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
5614
5697
  let xcprettyUtfArg = xcprettyUtf.asRubyArgument(name: "xcpretty_utf", type: nil)
5698
+ let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
5615
5699
  let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
5700
+ let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
5616
5701
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
5617
5702
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
5618
5703
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
@@ -5651,15 +5736,18 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5651
5736
  xcargsArg,
5652
5737
  xcconfigArg,
5653
5738
  suppressXcodeOutputArg,
5739
+ xcodebuildFormatterArg,
5740
+ buildTimingSummaryArg,
5654
5741
  disableXcprettyArg,
5655
5742
  xcprettyTestFormatArg,
5656
5743
  xcprettyFormatterArg,
5657
5744
  xcprettyReportJunitArg,
5658
5745
  xcprettyReportHtmlArg,
5659
5746
  xcprettyReportJsonArg,
5660
- analyzeBuildTimeArg,
5661
5747
  xcprettyUtfArg,
5748
+ analyzeBuildTimeArg,
5662
5749
  skipProfileDetectionArg,
5750
+ xcodebuildCommandArg,
5663
5751
  clonedSourcePackagesPathArg,
5664
5752
  skipPackageDependenciesResolutionArg,
5665
5753
  disablePackageAutomaticUpdatesArg,
@@ -6557,7 +6645,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
6557
6645
  Alias for the `sync_code_signing` action
6558
6646
 
6559
6647
  - parameters:
6560
- - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
6648
+ - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution, developer_id_installer
6561
6649
  - additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
6562
6650
  - readonly: Only fetch existing certificates and profiles, don't generate new ones
6563
6651
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
@@ -6581,18 +6669,22 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
6581
6669
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
6582
6670
  - googleCloudKeysFile: Path to the gc_keys.json file
6583
6671
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
6672
+ - skipGoogleCloudAccountConfirmation: Skips confirming to use the system google account
6584
6673
  - s3Region: Name of the S3 region
6585
6674
  - s3AccessKey: S3 access key
6586
6675
  - s3SecretAccessKey: S3 secret access key
6587
6676
  - s3Bucket: Name of the S3 bucket
6588
6677
  - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
6678
+ - gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
6589
6679
  - keychainName: Keychain the items should be imported to
6590
6680
  - keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
6591
6681
  - force: Renew the provisioning profiles every time you run match
6592
6682
  - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile types 'appstore' and 'developer_id'
6683
+ - includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
6593
6684
  - includeAllCertificates: Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
6594
- - forceForNewCertificates: Renew the provisioning profiles if the device count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
6685
+ - forceForNewCertificates: Renew the provisioning profiles if the certificate count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
6595
6686
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
6687
+ - safeRemoveCerts: Remove certs from repository during nuke without revoking them on the developer portal
6596
6688
  - skipDocs: Skip generation of a README.md for the created git repository
6597
6689
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
6598
6690
  - 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
@@ -6630,18 +6722,22 @@ public func match(type: String = matchfile.type,
6630
6722
  googleCloudBucketName: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.googleCloudBucketName),
6631
6723
  googleCloudKeysFile: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.googleCloudKeysFile),
6632
6724
  googleCloudProjectId: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.googleCloudProjectId),
6725
+ skipGoogleCloudAccountConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.skipGoogleCloudAccountConfirmation),
6633
6726
  s3Region: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3Region),
6634
6727
  s3AccessKey: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3AccessKey),
6635
6728
  s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3SecretAccessKey),
6636
6729
  s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3Bucket),
6637
6730
  s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3ObjectPrefix),
6731
+ gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.gitlabProject),
6638
6732
  keychainName: String = matchfile.keychainName,
6639
6733
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.keychainPassword),
6640
6734
  force: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.force),
6641
6735
  forceForNewDevices: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.forceForNewDevices),
6736
+ includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.includeMacInProfiles),
6642
6737
  includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.includeAllCertificates),
6643
6738
  forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.forceForNewCertificates),
6644
6739
  skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.skipConfirmation),
6740
+ safeRemoveCerts: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.safeRemoveCerts),
6645
6741
  skipDocs: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.skipDocs),
6646
6742
  platform: String = matchfile.platform,
6647
6743
  deriveCatalystAppIdentifier: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.deriveCatalystAppIdentifier),
@@ -6677,18 +6773,22 @@ public func match(type: String = matchfile.type,
6677
6773
  let googleCloudBucketNameArg = googleCloudBucketName.asRubyArgument(name: "google_cloud_bucket_name", type: nil)
6678
6774
  let googleCloudKeysFileArg = googleCloudKeysFile.asRubyArgument(name: "google_cloud_keys_file", type: nil)
6679
6775
  let googleCloudProjectIdArg = googleCloudProjectId.asRubyArgument(name: "google_cloud_project_id", type: nil)
6776
+ let skipGoogleCloudAccountConfirmationArg = skipGoogleCloudAccountConfirmation.asRubyArgument(name: "skip_google_cloud_account_confirmation", type: nil)
6680
6777
  let s3RegionArg = s3Region.asRubyArgument(name: "s3_region", type: nil)
6681
6778
  let s3AccessKeyArg = s3AccessKey.asRubyArgument(name: "s3_access_key", type: nil)
6682
6779
  let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
6683
6780
  let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
6684
6781
  let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
6782
+ let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
6685
6783
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
6686
6784
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
6687
6785
  let forceArg = force.asRubyArgument(name: "force", type: nil)
6688
6786
  let forceForNewDevicesArg = forceForNewDevices.asRubyArgument(name: "force_for_new_devices", type: nil)
6787
+ let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
6689
6788
  let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
6690
6789
  let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
6691
6790
  let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
6791
+ let safeRemoveCertsArg = safeRemoveCerts.asRubyArgument(name: "safe_remove_certs", type: nil)
6692
6792
  let skipDocsArg = skipDocs.asRubyArgument(name: "skip_docs", type: nil)
6693
6793
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
6694
6794
  let deriveCatalystAppIdentifierArg = deriveCatalystAppIdentifier.asRubyArgument(name: "derive_catalyst_app_identifier", type: nil)
@@ -6723,18 +6823,22 @@ public func match(type: String = matchfile.type,
6723
6823
  googleCloudBucketNameArg,
6724
6824
  googleCloudKeysFileArg,
6725
6825
  googleCloudProjectIdArg,
6826
+ skipGoogleCloudAccountConfirmationArg,
6726
6827
  s3RegionArg,
6727
6828
  s3AccessKeyArg,
6728
6829
  s3SecretAccessKeyArg,
6729
6830
  s3BucketArg,
6730
6831
  s3ObjectPrefixArg,
6832
+ gitlabProjectArg,
6731
6833
  keychainNameArg,
6732
6834
  keychainPasswordArg,
6733
6835
  forceArg,
6734
6836
  forceForNewDevicesArg,
6837
+ includeMacInProfilesArg,
6735
6838
  includeAllCertificatesArg,
6736
6839
  forceForNewCertificatesArg,
6737
6840
  skipConfirmationArg,
6841
+ safeRemoveCertsArg,
6738
6842
  skipDocsArg,
6739
6843
  platformArg,
6740
6844
  deriveCatalystAppIdentifierArg,
@@ -6756,7 +6860,7 @@ public func match(type: String = matchfile.type,
6756
6860
  Easily nuke your certificate and provisioning profiles (via _match_)
6757
6861
 
6758
6862
  - parameters:
6759
- - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
6863
+ - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution, developer_id_installer
6760
6864
  - additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
6761
6865
  - readonly: Only fetch existing certificates and profiles, don't generate new ones
6762
6866
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
@@ -6780,18 +6884,22 @@ public func match(type: String = matchfile.type,
6780
6884
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
6781
6885
  - googleCloudKeysFile: Path to the gc_keys.json file
6782
6886
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
6887
+ - skipGoogleCloudAccountConfirmation: Skips confirming to use the system google account
6783
6888
  - s3Region: Name of the S3 region
6784
6889
  - s3AccessKey: S3 access key
6785
6890
  - s3SecretAccessKey: S3 secret access key
6786
6891
  - s3Bucket: Name of the S3 bucket
6787
6892
  - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
6893
+ - gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
6788
6894
  - keychainName: Keychain the items should be imported to
6789
6895
  - keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
6790
6896
  - force: Renew the provisioning profiles every time you run match
6791
6897
  - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile types 'appstore' and 'developer_id'
6898
+ - includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
6792
6899
  - includeAllCertificates: Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
6793
- - forceForNewCertificates: Renew the provisioning profiles if the device count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
6900
+ - forceForNewCertificates: Renew the provisioning profiles if the certificate count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
6794
6901
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
6902
+ - safeRemoveCerts: Remove certs from repository during nuke without revoking them on the developer portal
6795
6903
  - skipDocs: Skip generation of a README.md for the created git repository
6796
6904
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
6797
6905
  - 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
@@ -6833,18 +6941,22 @@ public func matchNuke(type: String = "development",
6833
6941
  googleCloudBucketName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6834
6942
  googleCloudKeysFile: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6835
6943
  googleCloudProjectId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6944
+ skipGoogleCloudAccountConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6836
6945
  s3Region: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6837
6946
  s3AccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6838
6947
  s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6839
6948
  s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6840
6949
  s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6950
+ gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6841
6951
  keychainName: String = "login.keychain",
6842
6952
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6843
6953
  force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6844
6954
  forceForNewDevices: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6955
+ includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6845
6956
  includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6846
6957
  forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6847
6958
  skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6959
+ safeRemoveCerts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6848
6960
  skipDocs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6849
6961
  platform: String = "ios",
6850
6962
  deriveCatalystAppIdentifier: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -6880,18 +6992,22 @@ public func matchNuke(type: String = "development",
6880
6992
  let googleCloudBucketNameArg = googleCloudBucketName.asRubyArgument(name: "google_cloud_bucket_name", type: nil)
6881
6993
  let googleCloudKeysFileArg = googleCloudKeysFile.asRubyArgument(name: "google_cloud_keys_file", type: nil)
6882
6994
  let googleCloudProjectIdArg = googleCloudProjectId.asRubyArgument(name: "google_cloud_project_id", type: nil)
6995
+ let skipGoogleCloudAccountConfirmationArg = skipGoogleCloudAccountConfirmation.asRubyArgument(name: "skip_google_cloud_account_confirmation", type: nil)
6883
6996
  let s3RegionArg = s3Region.asRubyArgument(name: "s3_region", type: nil)
6884
6997
  let s3AccessKeyArg = s3AccessKey.asRubyArgument(name: "s3_access_key", type: nil)
6885
6998
  let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
6886
6999
  let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
6887
7000
  let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
7001
+ let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
6888
7002
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
6889
7003
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
6890
7004
  let forceArg = force.asRubyArgument(name: "force", type: nil)
6891
7005
  let forceForNewDevicesArg = forceForNewDevices.asRubyArgument(name: "force_for_new_devices", type: nil)
7006
+ let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
6892
7007
  let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
6893
7008
  let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
6894
7009
  let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
7010
+ let safeRemoveCertsArg = safeRemoveCerts.asRubyArgument(name: "safe_remove_certs", type: nil)
6895
7011
  let skipDocsArg = skipDocs.asRubyArgument(name: "skip_docs", type: nil)
6896
7012
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
6897
7013
  let deriveCatalystAppIdentifierArg = deriveCatalystAppIdentifier.asRubyArgument(name: "derive_catalyst_app_identifier", type: nil)
@@ -6926,18 +7042,22 @@ public func matchNuke(type: String = "development",
6926
7042
  googleCloudBucketNameArg,
6927
7043
  googleCloudKeysFileArg,
6928
7044
  googleCloudProjectIdArg,
7045
+ skipGoogleCloudAccountConfirmationArg,
6929
7046
  s3RegionArg,
6930
7047
  s3AccessKeyArg,
6931
7048
  s3SecretAccessKeyArg,
6932
7049
  s3BucketArg,
6933
7050
  s3ObjectPrefixArg,
7051
+ gitlabProjectArg,
6934
7052
  keychainNameArg,
6935
7053
  keychainPasswordArg,
6936
7054
  forceArg,
6937
7055
  forceForNewDevicesArg,
7056
+ includeMacInProfilesArg,
6938
7057
  includeAllCertificatesArg,
6939
7058
  forceForNewCertificatesArg,
6940
7059
  skipConfirmationArg,
7060
+ safeRemoveCertsArg,
6941
7061
  skipDocsArg,
6942
7062
  platformArg,
6943
7063
  deriveCatalystAppIdentifierArg,
@@ -7090,6 +7210,7 @@ public func nexusUpload(file: String,
7090
7210
  - package: Path to package to notarize, e.g. .app bundle or disk image
7091
7211
  - useNotarytool: Whether to `xcrun notarytool` or `xcrun altool`
7092
7212
  - tryEarlyStapling: Whether to try early stapling while the notarization request is in progress
7213
+ - skipStapling: Do not staple the notarization ticket to the artifact; useful for single file executables and ZIP archives
7093
7214
  - bundleId: Bundle identifier to uniquely identify the package
7094
7215
  - username: Apple ID username
7095
7216
  - ascProvider: Provider short name for accounts associated with multiple providers
@@ -7101,6 +7222,7 @@ public func nexusUpload(file: String,
7101
7222
  public func notarize(package: String,
7102
7223
  useNotarytool: OptionalConfigValue<Bool> = .fastlaneDefault(true),
7103
7224
  tryEarlyStapling: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7225
+ skipStapling: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7104
7226
  bundleId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7105
7227
  username: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7106
7228
  ascProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -7112,6 +7234,7 @@ public func notarize(package: String,
7112
7234
  let packageArg = RubyCommand.Argument(name: "package", value: package, type: nil)
7113
7235
  let useNotarytoolArg = useNotarytool.asRubyArgument(name: "use_notarytool", type: nil)
7114
7236
  let tryEarlyStaplingArg = tryEarlyStapling.asRubyArgument(name: "try_early_stapling", type: nil)
7237
+ let skipStaplingArg = skipStapling.asRubyArgument(name: "skip_stapling", type: nil)
7115
7238
  let bundleIdArg = bundleId.asRubyArgument(name: "bundle_id", type: nil)
7116
7239
  let usernameArg = username.asRubyArgument(name: "username", type: nil)
7117
7240
  let ascProviderArg = ascProvider.asRubyArgument(name: "asc_provider", type: nil)
@@ -7122,6 +7245,7 @@ public func notarize(package: String,
7122
7245
  let array: [RubyCommand.Argument?] = [packageArg,
7123
7246
  useNotarytoolArg,
7124
7247
  tryEarlyStaplingArg,
7248
+ skipStaplingArg,
7125
7249
  bundleIdArg,
7126
7250
  usernameArg,
7127
7251
  ascProviderArg,
@@ -7383,6 +7507,7 @@ public func optOutUsage() {
7383
7507
  Alias for the `get_push_certificate` action
7384
7508
 
7385
7509
  - parameters:
7510
+ - platform: Set certificate's platform. Used for creation of production & development certificates. Supported platforms: ios, macos
7386
7511
  - development: Renew the development push certificate instead of the production one
7387
7512
  - websitePush: Create a Website Push certificate
7388
7513
  - generateP12: Generate a p12 file additionally to a PEM file
@@ -7410,7 +7535,8 @@ public func optOutUsage() {
7410
7535
  ```|
7411
7536
  >|
7412
7537
  */
7413
- public func pem(development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7538
+ public func pem(platform: String = "ios",
7539
+ development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7414
7540
  websitePush: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7415
7541
  generateP12: OptionalConfigValue<Bool> = .fastlaneDefault(true),
7416
7542
  activeDaysLimit: Int = 30,
@@ -7425,6 +7551,7 @@ public func pem(development: OptionalConfigValue<Bool> = .fastlaneDefault(false)
7425
7551
  outputPath: String = ".",
7426
7552
  newProfile: ((String) -> Void)? = nil)
7427
7553
  {
7554
+ let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
7428
7555
  let developmentArg = development.asRubyArgument(name: "development", type: nil)
7429
7556
  let websitePushArg = websitePush.asRubyArgument(name: "website_push", type: nil)
7430
7557
  let generateP12Arg = generateP12.asRubyArgument(name: "generate_p12", type: nil)
@@ -7439,7 +7566,8 @@ public func pem(development: OptionalConfigValue<Bool> = .fastlaneDefault(false)
7439
7566
  let pemNameArg = pemName.asRubyArgument(name: "pem_name", type: nil)
7440
7567
  let outputPathArg = RubyCommand.Argument(name: "output_path", value: outputPath, type: nil)
7441
7568
  let newProfileArg = RubyCommand.Argument(name: "new_profile", value: newProfile, type: .stringClosure)
7442
- let array: [RubyCommand.Argument?] = [developmentArg,
7569
+ let array: [RubyCommand.Argument?] = [platformArg,
7570
+ developmentArg,
7443
7571
  websitePushArg,
7444
7572
  generateP12Arg,
7445
7573
  activeDaysLimitArg,
@@ -7502,6 +7630,7 @@ public func pem(development: OptionalConfigValue<Bool> = .fastlaneDefault(false)
7502
7630
  - waitProcessingTimeoutDuration: Timeout duration in seconds to wait for App Store Connect processing. If set, after exceeding timeout duration, this will `force stop` to wait for App Store Connect processing and exit with exception
7503
7631
  - waitForUploadedBuild: **DEPRECATED!** No longer needed with the transition over to the App Store Connect API - Use version info from uploaded ipa file to determine what build to use for distribution. If set to false, latest processing or any latest build will be used
7504
7632
  - rejectBuildWaitingForReview: Expire previous if it's 'waiting for review'
7633
+ - submitBetaReview: Send the build for a beta review
7505
7634
 
7506
7635
  More details can be found on https://docs.fastlane.tools/actions/pilot/.
7507
7636
  This integration will only do the TestFlight upload.
@@ -7543,7 +7672,8 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7543
7672
  waitProcessingInterval: Int = 30,
7544
7673
  waitProcessingTimeoutDuration: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
7545
7674
  waitForUploadedBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7546
- rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false))
7675
+ rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7676
+ submitBetaReview: OptionalConfigValue<Bool> = .fastlaneDefault(true))
7547
7677
  {
7548
7678
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
7549
7679
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -7583,6 +7713,7 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7583
7713
  let waitProcessingTimeoutDurationArg = waitProcessingTimeoutDuration.asRubyArgument(name: "wait_processing_timeout_duration", type: nil)
7584
7714
  let waitForUploadedBuildArg = waitForUploadedBuild.asRubyArgument(name: "wait_for_uploaded_build", type: nil)
7585
7715
  let rejectBuildWaitingForReviewArg = rejectBuildWaitingForReview.asRubyArgument(name: "reject_build_waiting_for_review", type: nil)
7716
+ let submitBetaReviewArg = submitBetaReview.asRubyArgument(name: "submit_beta_review", type: nil)
7586
7717
  let array: [RubyCommand.Argument?] = [apiKeyPathArg,
7587
7718
  apiKeyArg,
7588
7719
  usernameArg,
@@ -7620,7 +7751,8 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7620
7751
  waitProcessingIntervalArg,
7621
7752
  waitProcessingTimeoutDurationArg,
7622
7753
  waitForUploadedBuildArg,
7623
- rejectBuildWaitingForReviewArg]
7754
+ rejectBuildWaitingForReviewArg,
7755
+ submitBetaReviewArg]
7624
7756
  let args: [RubyCommand.Argument] = array
7625
7757
  .filter { $0?.value != nil }
7626
7758
  .compactMap { $0 }
@@ -7765,6 +7897,8 @@ public func podLibLint(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefau
7765
7897
  - verbose: Show more debugging information
7766
7898
  - useModularHeaders: Use modular headers option during validation
7767
7899
  - synchronous: If validation depends on other recently pushed pods, synchronize
7900
+ - noOverwrite: Disallow pushing that would overwrite an existing spec
7901
+ - localOnly: Does not perform the step of pushing REPO to its remote
7768
7902
  */
7769
7903
  public func podPush(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7770
7904
  path: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -7778,7 +7912,9 @@ public func podPush(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefault(
7778
7912
  useJson: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
7779
7913
  verbose: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7780
7914
  useModularHeaders: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
7781
- synchronous: OptionalConfigValue<Bool?> = .fastlaneDefault(nil))
7915
+ synchronous: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
7916
+ noOverwrite: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
7917
+ localOnly: OptionalConfigValue<Bool?> = .fastlaneDefault(nil))
7782
7918
  {
7783
7919
  let useBundleExecArg = useBundleExec.asRubyArgument(name: "use_bundle_exec", type: nil)
7784
7920
  let pathArg = path.asRubyArgument(name: "path", type: nil)
@@ -7793,6 +7929,8 @@ public func podPush(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefault(
7793
7929
  let verboseArg = verbose.asRubyArgument(name: "verbose", type: nil)
7794
7930
  let useModularHeadersArg = useModularHeaders.asRubyArgument(name: "use_modular_headers", type: nil)
7795
7931
  let synchronousArg = synchronous.asRubyArgument(name: "synchronous", type: nil)
7932
+ let noOverwriteArg = noOverwrite.asRubyArgument(name: "no_overwrite", type: nil)
7933
+ let localOnlyArg = localOnly.asRubyArgument(name: "local_only", type: nil)
7796
7934
  let array: [RubyCommand.Argument?] = [useBundleExecArg,
7797
7935
  pathArg,
7798
7936
  repoArg,
@@ -7805,7 +7943,9 @@ public func podPush(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefault(
7805
7943
  useJsonArg,
7806
7944
  verboseArg,
7807
7945
  useModularHeadersArg,
7808
- synchronousArg]
7946
+ synchronousArg,
7947
+ noOverwriteArg,
7948
+ localOnlyArg]
7809
7949
  let args: [RubyCommand.Argument] = array
7810
7950
  .filter { $0?.value != nil }
7811
7951
  .compactMap { $0 }
@@ -8168,7 +8308,7 @@ public func puts(message: OptionalConfigValue<String?> = .fastlaneDefault(nil))
8168
8308
  This can be useful when basing your release process on the version string only stored in one place - in the podspec.
8169
8309
  As one of the first steps you'd read the podspec and its version and the rest of the workflow can use that version string (when e.g. creating a new git tag or a GitHub Release).
8170
8310
  */
8171
- @discardableResult public func readPodspec(path: String) -> [String: String] {
8311
+ @discardableResult public func readPodspec(path: String) -> [String: Any] {
8172
8312
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
8173
8313
  let array: [RubyCommand.Argument?] = [pathArg]
8174
8314
  let args: [RubyCommand.Argument] = array
@@ -8500,8 +8640,8 @@ public func rubyVersion() {
8500
8640
  - project: Path to the project file
8501
8641
  - packagePath: Path to the Swift Package
8502
8642
  - scheme: The project's scheme. Make sure it's marked as `Shared`
8503
- - device: The name of the simulator type you want to run tests on (e.g. 'iPhone 6')
8504
- - devices: Array of devices to run the tests on (e.g. ['iPhone 6', 'iPad Air'])
8643
+ - device: The name of the simulator type you want to run tests on (e.g. 'iPhone 6' or 'iPhone SE (2nd generation) (14.5)')
8644
+ - devices: Array of devices to run the tests on (e.g. ['iPhone 6', 'iPad Air', 'iPhone SE (2nd generation) (14.5)'])
8505
8645
  - skipDetectDevices: Should skip auto detecting of devices if none were specified
8506
8646
  - ensureDevicesFound: Should fail if devices not found
8507
8647
  - forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
@@ -8522,7 +8662,6 @@ public func rubyVersion() {
8522
8662
  - addressSanitizer: Should the address sanitizer be turned on?
8523
8663
  - threadSanitizer: Should the thread sanitizer be turned on?
8524
8664
  - openReport: Should the HTML report be opened when tests are completed?
8525
- - disableXcpretty: Disable xcpretty formatting of build, similar to `output_style='raw'` but this will also skip the test results table
8526
8665
  - outputDirectory: The directory in which all reports will be stored
8527
8666
  - outputStyle: Define how the output should look like. Valid values are: standard, basic, rspec, or raw (disables xcpretty during xcodebuild)
8528
8667
  - outputTypes: Comma separated list of the output types (e.g. html, junit, json-compilation-database)
@@ -8530,13 +8669,19 @@ public func rubyVersion() {
8530
8669
  - buildlogPath: The directory where to store the raw log
8531
8670
  - includeSimulatorLogs: If the logs generated by the app (e.g. using NSLog, perror, etc.) in the Simulator should be written to the output_directory
8532
8671
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
8533
- - formatter: A custom xcpretty formatter to use
8672
+ - xcodebuildFormatter: xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
8673
+ - outputRemoveRetryAttempts: Remove retry attempts from test results table and the JUnit report (if not using xcpretty)
8674
+ - disableXcpretty: **DEPRECATED!** Use `output_style: 'raw'` instead - Disable xcpretty formatting of build, similar to `output_style='raw'` but this will also skip the test results table
8675
+ - formatter: **DEPRECATED!** Use 'xcpretty_formatter' instead - A custom xcpretty formatter to use
8676
+ - xcprettyFormatter: A custom xcpretty formatter to use
8534
8677
  - xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')
8535
8678
  - derivedDataPath: The directory where build products and other derived data will go
8536
8679
  - shouldZipBuildProducts: Should zip the derived data build products and place in output path?
8537
8680
  - outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
8681
+ - resultBundlePath: Custom path for the result bundle, overrides result_bundle
8538
8682
  - resultBundle: Should an Xcode result bundle be generated in the output directory
8539
8683
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
8684
+ - parallelTesting: Optionally override the per-target setting in the scheme for running tests in parallel. Equivalent to -parallel-testing-enabled
8540
8685
  - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
8541
8686
  - maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
8542
8687
  - disableConcurrentTesting: Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing
@@ -8566,83 +8711,90 @@ public func rubyVersion() {
8566
8711
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
8567
8712
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
8568
8713
  - useSystemScm: Lets xcodebuild use system's scm configuration
8569
- - numberOfRetries: The number of times a test can fail before scan should stop retrying
8714
+ - numberOfRetries: The number of times a test can fail
8570
8715
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
8571
8716
 
8717
+ - returns: Outputs hash of results with the following keys: :number_of_tests, :number_of_failures, :number_of_retries, :number_of_tests_excluding_retries, :number_of_failures_excluding_retries
8718
+
8572
8719
  More information: https://docs.fastlane.tools/actions/scan/
8573
8720
  */
8574
- public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8575
- project: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8576
- packagePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8577
- scheme: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8578
- device: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8579
- devices: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8580
- skipDetectDevices: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8581
- ensureDevicesFound: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8582
- forceQuitSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8583
- resetSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8584
- disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(true),
8585
- prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8586
- reinstallApp: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8587
- appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8588
- onlyTesting: Any? = nil,
8589
- skipTesting: Any? = nil,
8590
- testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8591
- onlyTestConfigurations: Any? = nil,
8592
- skipTestConfigurations: Any? = nil,
8593
- xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8594
- toolchain: Any? = nil,
8595
- clean: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8596
- codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8597
- addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8598
- threadSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8599
- openReport: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8600
- disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8601
- outputDirectory: String = "./test_output",
8602
- outputStyle: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8603
- outputTypes: String = "html,junit",
8604
- outputFiles: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8605
- buildlogPath: String = "~/Library/Logs/scan",
8606
- includeSimulatorLogs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8607
- suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8608
- formatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8609
- xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8610
- derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8611
- shouldZipBuildProducts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8612
- outputXctestrun: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8613
- resultBundle: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8614
- useClangReportName: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8615
- concurrentWorkers: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
8616
- maxConcurrentSimulators: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
8617
- disableConcurrentTesting: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8618
- skipBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8619
- testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8620
- buildForTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8621
- sdk: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8622
- configuration: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8623
- xcargs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8624
- xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8625
- appName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8626
- deploymentTargetVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8627
- slackUrl: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8628
- slackChannel: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8629
- slackMessage: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8630
- slackUseWebhookConfiguredUsernameAndIcon: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8631
- slackUsername: String = "fastlane",
8632
- slackIconUrl: String = "https://fastlane.tools/assets/img/fastlane_icon.png",
8633
- skipSlack: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8634
- slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8635
- slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8636
- destination: Any? = nil,
8637
- catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8638
- customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8639
- xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
8640
- clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8641
- skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8642
- disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8643
- useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8644
- numberOfRetries: Int = 0,
8645
- failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(true))
8721
+ @discardableResult public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8722
+ project: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8723
+ packagePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8724
+ scheme: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8725
+ device: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8726
+ devices: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8727
+ skipDetectDevices: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8728
+ ensureDevicesFound: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8729
+ forceQuitSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8730
+ resetSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8731
+ disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(true),
8732
+ prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8733
+ reinstallApp: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8734
+ appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8735
+ onlyTesting: Any? = nil,
8736
+ skipTesting: Any? = nil,
8737
+ testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8738
+ onlyTestConfigurations: Any? = nil,
8739
+ skipTestConfigurations: Any? = nil,
8740
+ xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8741
+ toolchain: Any? = nil,
8742
+ clean: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8743
+ codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8744
+ addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8745
+ threadSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8746
+ openReport: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8747
+ outputDirectory: String = "./test_output",
8748
+ outputStyle: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8749
+ outputTypes: String = "html,junit",
8750
+ outputFiles: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8751
+ buildlogPath: String = "~/Library/Logs/scan",
8752
+ includeSimulatorLogs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8753
+ suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8754
+ xcodebuildFormatter: String = "xcbeautify",
8755
+ outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8756
+ disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8757
+ formatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8758
+ xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8759
+ xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8760
+ derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8761
+ shouldZipBuildProducts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8762
+ outputXctestrun: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8763
+ resultBundlePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8764
+ resultBundle: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8765
+ useClangReportName: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8766
+ parallelTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8767
+ concurrentWorkers: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
8768
+ maxConcurrentSimulators: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
8769
+ disableConcurrentTesting: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8770
+ skipBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8771
+ testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8772
+ buildForTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8773
+ sdk: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8774
+ configuration: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8775
+ xcargs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8776
+ xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8777
+ appName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8778
+ deploymentTargetVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8779
+ slackUrl: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8780
+ slackChannel: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8781
+ slackMessage: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8782
+ slackUseWebhookConfiguredUsernameAndIcon: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8783
+ slackUsername: String = "fastlane",
8784
+ slackIconUrl: String = "https://fastlane.tools/assets/img/fastlane_icon.png",
8785
+ skipSlack: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8786
+ slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8787
+ slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8788
+ destination: Any? = nil,
8789
+ catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8790
+ customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8791
+ xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
8792
+ clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8793
+ skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8794
+ disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8795
+ useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8796
+ numberOfRetries: Int = 0,
8797
+ failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(true)) -> [String: Any]
8646
8798
  {
8647
8799
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
8648
8800
  let projectArg = project.asRubyArgument(name: "project", type: nil)
@@ -8670,7 +8822,6 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8670
8822
  let addressSanitizerArg = addressSanitizer.asRubyArgument(name: "address_sanitizer", type: nil)
8671
8823
  let threadSanitizerArg = threadSanitizer.asRubyArgument(name: "thread_sanitizer", type: nil)
8672
8824
  let openReportArg = openReport.asRubyArgument(name: "open_report", type: nil)
8673
- let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
8674
8825
  let outputDirectoryArg = RubyCommand.Argument(name: "output_directory", value: outputDirectory, type: nil)
8675
8826
  let outputStyleArg = outputStyle.asRubyArgument(name: "output_style", type: nil)
8676
8827
  let outputTypesArg = RubyCommand.Argument(name: "output_types", value: outputTypes, type: nil)
@@ -8678,13 +8829,19 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8678
8829
  let buildlogPathArg = RubyCommand.Argument(name: "buildlog_path", value: buildlogPath, type: nil)
8679
8830
  let includeSimulatorLogsArg = includeSimulatorLogs.asRubyArgument(name: "include_simulator_logs", type: nil)
8680
8831
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
8832
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
8833
+ let outputRemoveRetryAttemptsArg = outputRemoveRetryAttempts.asRubyArgument(name: "output_remove_retry_attempts", type: nil)
8834
+ let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
8681
8835
  let formatterArg = formatter.asRubyArgument(name: "formatter", type: nil)
8836
+ let xcprettyFormatterArg = xcprettyFormatter.asRubyArgument(name: "xcpretty_formatter", type: nil)
8682
8837
  let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
8683
8838
  let derivedDataPathArg = derivedDataPath.asRubyArgument(name: "derived_data_path", type: nil)
8684
8839
  let shouldZipBuildProductsArg = shouldZipBuildProducts.asRubyArgument(name: "should_zip_build_products", type: nil)
8685
8840
  let outputXctestrunArg = outputXctestrun.asRubyArgument(name: "output_xctestrun", type: nil)
8841
+ let resultBundlePathArg = resultBundlePath.asRubyArgument(name: "result_bundle_path", type: nil)
8686
8842
  let resultBundleArg = resultBundle.asRubyArgument(name: "result_bundle", type: nil)
8687
8843
  let useClangReportNameArg = useClangReportName.asRubyArgument(name: "use_clang_report_name", type: nil)
8844
+ let parallelTestingArg = parallelTesting.asRubyArgument(name: "parallel_testing", type: nil)
8688
8845
  let concurrentWorkersArg = concurrentWorkers.asRubyArgument(name: "concurrent_workers", type: nil)
8689
8846
  let maxConcurrentSimulatorsArg = maxConcurrentSimulators.asRubyArgument(name: "max_concurrent_simulators", type: nil)
8690
8847
  let disableConcurrentTestingArg = disableConcurrentTesting.asRubyArgument(name: "disable_concurrent_testing", type: nil)
@@ -8742,7 +8899,6 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8742
8899
  addressSanitizerArg,
8743
8900
  threadSanitizerArg,
8744
8901
  openReportArg,
8745
- disableXcprettyArg,
8746
8902
  outputDirectoryArg,
8747
8903
  outputStyleArg,
8748
8904
  outputTypesArg,
@@ -8750,13 +8906,19 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8750
8906
  buildlogPathArg,
8751
8907
  includeSimulatorLogsArg,
8752
8908
  suppressXcodeOutputArg,
8909
+ xcodebuildFormatterArg,
8910
+ outputRemoveRetryAttemptsArg,
8911
+ disableXcprettyArg,
8753
8912
  formatterArg,
8913
+ xcprettyFormatterArg,
8754
8914
  xcprettyArgsArg,
8755
8915
  derivedDataPathArg,
8756
8916
  shouldZipBuildProductsArg,
8757
8917
  outputXctestrunArg,
8918
+ resultBundlePathArg,
8758
8919
  resultBundleArg,
8759
8920
  useClangReportNameArg,
8921
+ parallelTestingArg,
8760
8922
  concurrentWorkersArg,
8761
8923
  maxConcurrentSimulatorsArg,
8762
8924
  disableConcurrentTestingArg,
@@ -8792,7 +8954,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8792
8954
  .filter { $0?.value != nil }
8793
8955
  .compactMap { $0 }
8794
8956
  let command = RubyCommand(commandID: "", methodName: "run_tests", className: nil, args: args)
8795
- _ = runner.executeCommand(command)
8957
+ return parseDictionary(fromString: runner.executeCommand(command))
8796
8958
  }
8797
8959
 
8798
8960
  /**
@@ -8905,8 +9067,8 @@ public func say(text: [String],
8905
9067
  - project: Path to the project file
8906
9068
  - packagePath: Path to the Swift Package
8907
9069
  - scheme: The project's scheme. Make sure it's marked as `Shared`
8908
- - device: The name of the simulator type you want to run tests on (e.g. 'iPhone 6')
8909
- - devices: Array of devices to run the tests on (e.g. ['iPhone 6', 'iPad Air'])
9070
+ - device: The name of the simulator type you want to run tests on (e.g. 'iPhone 6' or 'iPhone SE (2nd generation) (14.5)')
9071
+ - devices: Array of devices to run the tests on (e.g. ['iPhone 6', 'iPad Air', 'iPhone SE (2nd generation) (14.5)'])
8910
9072
  - skipDetectDevices: Should skip auto detecting of devices if none were specified
8911
9073
  - ensureDevicesFound: Should fail if devices not found
8912
9074
  - forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
@@ -8927,7 +9089,6 @@ public func say(text: [String],
8927
9089
  - addressSanitizer: Should the address sanitizer be turned on?
8928
9090
  - threadSanitizer: Should the thread sanitizer be turned on?
8929
9091
  - openReport: Should the HTML report be opened when tests are completed?
8930
- - disableXcpretty: Disable xcpretty formatting of build, similar to `output_style='raw'` but this will also skip the test results table
8931
9092
  - outputDirectory: The directory in which all reports will be stored
8932
9093
  - outputStyle: Define how the output should look like. Valid values are: standard, basic, rspec, or raw (disables xcpretty during xcodebuild)
8933
9094
  - outputTypes: Comma separated list of the output types (e.g. html, junit, json-compilation-database)
@@ -8935,13 +9096,19 @@ public func say(text: [String],
8935
9096
  - buildlogPath: The directory where to store the raw log
8936
9097
  - includeSimulatorLogs: If the logs generated by the app (e.g. using NSLog, perror, etc.) in the Simulator should be written to the output_directory
8937
9098
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
8938
- - formatter: A custom xcpretty formatter to use
9099
+ - xcodebuildFormatter: xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
9100
+ - outputRemoveRetryAttempts: Remove retry attempts from test results table and the JUnit report (if not using xcpretty)
9101
+ - disableXcpretty: **DEPRECATED!** Use `output_style: 'raw'` instead - Disable xcpretty formatting of build, similar to `output_style='raw'` but this will also skip the test results table
9102
+ - formatter: **DEPRECATED!** Use 'xcpretty_formatter' instead - A custom xcpretty formatter to use
9103
+ - xcprettyFormatter: A custom xcpretty formatter to use
8939
9104
  - xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')
8940
9105
  - derivedDataPath: The directory where build products and other derived data will go
8941
9106
  - shouldZipBuildProducts: Should zip the derived data build products and place in output path?
8942
9107
  - outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
9108
+ - resultBundlePath: Custom path for the result bundle, overrides result_bundle
8943
9109
  - resultBundle: Should an Xcode result bundle be generated in the output directory
8944
9110
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
9111
+ - parallelTesting: Optionally override the per-target setting in the scheme for running tests in parallel. Equivalent to -parallel-testing-enabled
8945
9112
  - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
8946
9113
  - maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
8947
9114
  - disableConcurrentTesting: Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing
@@ -8971,83 +9138,90 @@ public func say(text: [String],
8971
9138
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
8972
9139
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
8973
9140
  - useSystemScm: Lets xcodebuild use system's scm configuration
8974
- - numberOfRetries: The number of times a test can fail before scan should stop retrying
9141
+ - numberOfRetries: The number of times a test can fail
8975
9142
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
8976
9143
 
9144
+ - returns: Outputs hash of results with the following keys: :number_of_tests, :number_of_failures, :number_of_retries, :number_of_tests_excluding_retries, :number_of_failures_excluding_retries
9145
+
8977
9146
  More information: https://docs.fastlane.tools/actions/scan/
8978
9147
  */
8979
- public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.workspace),
8980
- project: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.project),
8981
- packagePath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.packagePath),
8982
- scheme: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.scheme),
8983
- device: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.device),
8984
- devices: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.devices),
8985
- skipDetectDevices: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipDetectDevices),
8986
- ensureDevicesFound: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.ensureDevicesFound),
8987
- forceQuitSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.forceQuitSimulator),
8988
- resetSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.resetSimulator),
8989
- disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disableSlideToType),
8990
- prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.prelaunchSimulator),
8991
- reinstallApp: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.reinstallApp),
8992
- appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appIdentifier),
8993
- onlyTesting: Any? = scanfile.onlyTesting,
8994
- skipTesting: Any? = scanfile.skipTesting,
8995
- testplan: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.testplan),
8996
- onlyTestConfigurations: Any? = scanfile.onlyTestConfigurations,
8997
- skipTestConfigurations: Any? = scanfile.skipTestConfigurations,
8998
- xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xctestrun),
8999
- toolchain: Any? = scanfile.toolchain,
9000
- clean: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.clean),
9001
- codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.codeCoverage),
9002
- addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.addressSanitizer),
9003
- threadSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.threadSanitizer),
9004
- openReport: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.openReport),
9005
- disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.disableXcpretty),
9006
- outputDirectory: String = scanfile.outputDirectory,
9007
- outputStyle: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.outputStyle),
9008
- outputTypes: String = scanfile.outputTypes,
9009
- outputFiles: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.outputFiles),
9010
- buildlogPath: String = scanfile.buildlogPath,
9011
- includeSimulatorLogs: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.includeSimulatorLogs),
9012
- suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.suppressXcodeOutput),
9013
- formatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.formatter),
9014
- xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcprettyArgs),
9015
- derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.derivedDataPath),
9016
- shouldZipBuildProducts: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.shouldZipBuildProducts),
9017
- outputXctestrun: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.outputXctestrun),
9018
- resultBundle: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.resultBundle),
9019
- useClangReportName: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useClangReportName),
9020
- concurrentWorkers: OptionalConfigValue<Int?> = .fastlaneDefault(scanfile.concurrentWorkers),
9021
- maxConcurrentSimulators: OptionalConfigValue<Int?> = .fastlaneDefault(scanfile.maxConcurrentSimulators),
9022
- disableConcurrentTesting: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disableConcurrentTesting),
9023
- skipBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipBuild),
9024
- testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.testWithoutBuilding),
9025
- buildForTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.buildForTesting),
9026
- sdk: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.sdk),
9027
- configuration: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.configuration),
9028
- xcargs: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcargs),
9029
- xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcconfig),
9030
- appName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appName),
9031
- deploymentTargetVersion: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.deploymentTargetVersion),
9032
- slackUrl: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackUrl),
9033
- slackChannel: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackChannel),
9034
- slackMessage: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackMessage),
9035
- slackUseWebhookConfiguredUsernameAndIcon: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackUseWebhookConfiguredUsernameAndIcon),
9036
- slackUsername: String = scanfile.slackUsername,
9037
- slackIconUrl: String = scanfile.slackIconUrl,
9038
- skipSlack: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipSlack),
9039
- slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackOnlyOnFailure),
9040
- slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.slackDefaultPayloads),
9041
- destination: Any? = scanfile.destination,
9042
- catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.catalystPlatform),
9043
- customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.customReportFileName),
9044
- xcodebuildCommand: String = scanfile.xcodebuildCommand,
9045
- clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.clonedSourcePackagesPath),
9046
- skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipPackageDependenciesResolution),
9047
- disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disablePackageAutomaticUpdates),
9048
- useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useSystemScm),
9049
- numberOfRetries: Int = scanfile.numberOfRetries,
9050
- failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.failBuild))
9148
+ @discardableResult public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.workspace),
9149
+ project: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.project),
9150
+ packagePath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.packagePath),
9151
+ scheme: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.scheme),
9152
+ device: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.device),
9153
+ devices: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.devices),
9154
+ skipDetectDevices: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipDetectDevices),
9155
+ ensureDevicesFound: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.ensureDevicesFound),
9156
+ forceQuitSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.forceQuitSimulator),
9157
+ resetSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.resetSimulator),
9158
+ disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disableSlideToType),
9159
+ prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.prelaunchSimulator),
9160
+ reinstallApp: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.reinstallApp),
9161
+ appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appIdentifier),
9162
+ onlyTesting: Any? = scanfile.onlyTesting,
9163
+ skipTesting: Any? = scanfile.skipTesting,
9164
+ testplan: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.testplan),
9165
+ onlyTestConfigurations: Any? = scanfile.onlyTestConfigurations,
9166
+ skipTestConfigurations: Any? = scanfile.skipTestConfigurations,
9167
+ xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xctestrun),
9168
+ toolchain: Any? = scanfile.toolchain,
9169
+ clean: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.clean),
9170
+ codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.codeCoverage),
9171
+ addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.addressSanitizer),
9172
+ threadSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.threadSanitizer),
9173
+ openReport: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.openReport),
9174
+ outputDirectory: String = scanfile.outputDirectory,
9175
+ outputStyle: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.outputStyle),
9176
+ outputTypes: String = scanfile.outputTypes,
9177
+ outputFiles: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.outputFiles),
9178
+ buildlogPath: String = scanfile.buildlogPath,
9179
+ includeSimulatorLogs: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.includeSimulatorLogs),
9180
+ suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.suppressXcodeOutput),
9181
+ xcodebuildFormatter: String = scanfile.xcodebuildFormatter,
9182
+ outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.outputRemoveRetryAttempts),
9183
+ disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.disableXcpretty),
9184
+ formatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.formatter),
9185
+ xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcprettyFormatter),
9186
+ xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcprettyArgs),
9187
+ derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.derivedDataPath),
9188
+ shouldZipBuildProducts: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.shouldZipBuildProducts),
9189
+ outputXctestrun: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.outputXctestrun),
9190
+ resultBundlePath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.resultBundlePath),
9191
+ resultBundle: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.resultBundle),
9192
+ useClangReportName: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useClangReportName),
9193
+ parallelTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.parallelTesting),
9194
+ concurrentWorkers: OptionalConfigValue<Int?> = .fastlaneDefault(scanfile.concurrentWorkers),
9195
+ maxConcurrentSimulators: OptionalConfigValue<Int?> = .fastlaneDefault(scanfile.maxConcurrentSimulators),
9196
+ disableConcurrentTesting: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disableConcurrentTesting),
9197
+ skipBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipBuild),
9198
+ testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.testWithoutBuilding),
9199
+ buildForTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.buildForTesting),
9200
+ sdk: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.sdk),
9201
+ configuration: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.configuration),
9202
+ xcargs: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcargs),
9203
+ xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcconfig),
9204
+ appName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appName),
9205
+ deploymentTargetVersion: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.deploymentTargetVersion),
9206
+ slackUrl: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackUrl),
9207
+ slackChannel: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackChannel),
9208
+ slackMessage: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackMessage),
9209
+ slackUseWebhookConfiguredUsernameAndIcon: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackUseWebhookConfiguredUsernameAndIcon),
9210
+ slackUsername: String = scanfile.slackUsername,
9211
+ slackIconUrl: String = scanfile.slackIconUrl,
9212
+ skipSlack: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipSlack),
9213
+ slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackOnlyOnFailure),
9214
+ slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.slackDefaultPayloads),
9215
+ destination: Any? = scanfile.destination,
9216
+ catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.catalystPlatform),
9217
+ customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.customReportFileName),
9218
+ xcodebuildCommand: String = scanfile.xcodebuildCommand,
9219
+ clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.clonedSourcePackagesPath),
9220
+ skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipPackageDependenciesResolution),
9221
+ disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disablePackageAutomaticUpdates),
9222
+ useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useSystemScm),
9223
+ numberOfRetries: Int = scanfile.numberOfRetries,
9224
+ failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.failBuild)) -> [String: Any]
9051
9225
  {
9052
9226
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
9053
9227
  let projectArg = project.asRubyArgument(name: "project", type: nil)
@@ -9075,7 +9249,6 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9075
9249
  let addressSanitizerArg = addressSanitizer.asRubyArgument(name: "address_sanitizer", type: nil)
9076
9250
  let threadSanitizerArg = threadSanitizer.asRubyArgument(name: "thread_sanitizer", type: nil)
9077
9251
  let openReportArg = openReport.asRubyArgument(name: "open_report", type: nil)
9078
- let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
9079
9252
  let outputDirectoryArg = RubyCommand.Argument(name: "output_directory", value: outputDirectory, type: nil)
9080
9253
  let outputStyleArg = outputStyle.asRubyArgument(name: "output_style", type: nil)
9081
9254
  let outputTypesArg = RubyCommand.Argument(name: "output_types", value: outputTypes, type: nil)
@@ -9083,13 +9256,19 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9083
9256
  let buildlogPathArg = RubyCommand.Argument(name: "buildlog_path", value: buildlogPath, type: nil)
9084
9257
  let includeSimulatorLogsArg = includeSimulatorLogs.asRubyArgument(name: "include_simulator_logs", type: nil)
9085
9258
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
9259
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
9260
+ let outputRemoveRetryAttemptsArg = outputRemoveRetryAttempts.asRubyArgument(name: "output_remove_retry_attempts", type: nil)
9261
+ let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
9086
9262
  let formatterArg = formatter.asRubyArgument(name: "formatter", type: nil)
9263
+ let xcprettyFormatterArg = xcprettyFormatter.asRubyArgument(name: "xcpretty_formatter", type: nil)
9087
9264
  let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
9088
9265
  let derivedDataPathArg = derivedDataPath.asRubyArgument(name: "derived_data_path", type: nil)
9089
9266
  let shouldZipBuildProductsArg = shouldZipBuildProducts.asRubyArgument(name: "should_zip_build_products", type: nil)
9090
9267
  let outputXctestrunArg = outputXctestrun.asRubyArgument(name: "output_xctestrun", type: nil)
9268
+ let resultBundlePathArg = resultBundlePath.asRubyArgument(name: "result_bundle_path", type: nil)
9091
9269
  let resultBundleArg = resultBundle.asRubyArgument(name: "result_bundle", type: nil)
9092
9270
  let useClangReportNameArg = useClangReportName.asRubyArgument(name: "use_clang_report_name", type: nil)
9271
+ let parallelTestingArg = parallelTesting.asRubyArgument(name: "parallel_testing", type: nil)
9093
9272
  let concurrentWorkersArg = concurrentWorkers.asRubyArgument(name: "concurrent_workers", type: nil)
9094
9273
  let maxConcurrentSimulatorsArg = maxConcurrentSimulators.asRubyArgument(name: "max_concurrent_simulators", type: nil)
9095
9274
  let disableConcurrentTestingArg = disableConcurrentTesting.asRubyArgument(name: "disable_concurrent_testing", type: nil)
@@ -9147,7 +9326,6 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9147
9326
  addressSanitizerArg,
9148
9327
  threadSanitizerArg,
9149
9328
  openReportArg,
9150
- disableXcprettyArg,
9151
9329
  outputDirectoryArg,
9152
9330
  outputStyleArg,
9153
9331
  outputTypesArg,
@@ -9155,13 +9333,19 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9155
9333
  buildlogPathArg,
9156
9334
  includeSimulatorLogsArg,
9157
9335
  suppressXcodeOutputArg,
9336
+ xcodebuildFormatterArg,
9337
+ outputRemoveRetryAttemptsArg,
9338
+ disableXcprettyArg,
9158
9339
  formatterArg,
9340
+ xcprettyFormatterArg,
9159
9341
  xcprettyArgsArg,
9160
9342
  derivedDataPathArg,
9161
9343
  shouldZipBuildProductsArg,
9162
9344
  outputXctestrunArg,
9345
+ resultBundlePathArg,
9163
9346
  resultBundleArg,
9164
9347
  useClangReportNameArg,
9348
+ parallelTestingArg,
9165
9349
  concurrentWorkersArg,
9166
9350
  maxConcurrentSimulatorsArg,
9167
9351
  disableConcurrentTestingArg,
@@ -9197,7 +9381,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9197
9381
  .filter { $0?.value != nil }
9198
9382
  .compactMap { $0 }
9199
9383
  let command = RubyCommand(commandID: "", methodName: "scan", className: nil, args: args)
9200
- _ = runner.executeCommand(command)
9384
+ return parseDictionary(fromString: runner.executeCommand(command))
9201
9385
  }
9202
9386
 
9203
9387
  /**
@@ -9430,6 +9614,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
9430
9614
  - description: Description of this release
9431
9615
  - isDraft: Whether the release should be marked as draft
9432
9616
  - isPrerelease: Whether the release should be marked as prerelease
9617
+ - isGenerateReleaseNotes: Whether the name and body of this release should be generated automatically
9433
9618
  - uploadAssets: Path to assets to be uploaded with the release
9434
9619
 
9435
9620
  - returns: A hash containing all relevant information of this release
@@ -9449,6 +9634,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
9449
9634
  description: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9450
9635
  isDraft: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9451
9636
  isPrerelease: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9637
+ isGenerateReleaseNotes: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9452
9638
  uploadAssets: OptionalConfigValue<[String]?> = .fastlaneDefault(nil)) -> [String: Any]
9453
9639
  {
9454
9640
  let repositoryNameArg = RubyCommand.Argument(name: "repository_name", value: repositoryName, type: nil)
@@ -9461,6 +9647,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
9461
9647
  let descriptionArg = description.asRubyArgument(name: "description", type: nil)
9462
9648
  let isDraftArg = isDraft.asRubyArgument(name: "is_draft", type: nil)
9463
9649
  let isPrereleaseArg = isPrerelease.asRubyArgument(name: "is_prerelease", type: nil)
9650
+ let isGenerateReleaseNotesArg = isGenerateReleaseNotes.asRubyArgument(name: "is_generate_release_notes", type: nil)
9464
9651
  let uploadAssetsArg = uploadAssets.asRubyArgument(name: "upload_assets", type: nil)
9465
9652
  let array: [RubyCommand.Argument?] = [repositoryNameArg,
9466
9653
  serverUrlArg,
@@ -9472,6 +9659,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
9472
9659
  descriptionArg,
9473
9660
  isDraftArg,
9474
9661
  isPrereleaseArg,
9662
+ isGenerateReleaseNotesArg,
9475
9663
  uploadAssetsArg]
9476
9664
  let args: [RubyCommand.Argument] = array
9477
9665
  .filter { $0?.value != nil }
@@ -9550,6 +9738,7 @@ public func setPodKey(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefaul
9550
9738
  - parameters:
9551
9739
  - force: Force setup, even if not executed by CI
9552
9740
  - provider: CI provider. If none is set, the provider is detected automatically
9741
+ - timeout: Set a custom timeout in seconds for keychain. Set `0` if you want to specify 'no time-out'
9553
9742
 
9554
9743
  - Creates a new temporary keychain for use with match|
9555
9744
  - Switches match to `readonly` mode to not create new profiles/cert on CI|
@@ -9558,12 +9747,15 @@ public func setPodKey(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefaul
9558
9747
  This action helps with CI integration. Add this to the top of your Fastfile if you use CI.
9559
9748
  */
9560
9749
  public func setupCi(force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9561
- provider: OptionalConfigValue<String?> = .fastlaneDefault(nil))
9750
+ provider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9751
+ timeout: Int = 3600)
9562
9752
  {
9563
9753
  let forceArg = force.asRubyArgument(name: "force", type: nil)
9564
9754
  let providerArg = provider.asRubyArgument(name: "provider", type: nil)
9755
+ let timeoutArg = RubyCommand.Argument(name: "timeout", value: timeout, type: nil)
9565
9756
  let array: [RubyCommand.Argument?] = [forceArg,
9566
- providerArg]
9757
+ providerArg,
9758
+ timeoutArg]
9567
9759
  let args: [RubyCommand.Argument] = array
9568
9760
  .filter { $0?.value != nil }
9569
9761
  .compactMap { $0 }
@@ -9720,6 +9912,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
9720
9912
  - development: Renew the development certificate instead of the production one
9721
9913
  - skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
9722
9914
  - force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
9915
+ - includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
9723
9916
  - appIdentifier: The bundle identifier of your app
9724
9917
  - apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
9725
9918
  - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)
@@ -9749,6 +9942,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
9749
9942
  development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9750
9943
  skipInstall: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9751
9944
  force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9945
+ includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9752
9946
  appIdentifier: String,
9753
9947
  apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9754
9948
  apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
@@ -9774,6 +9968,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
9774
9968
  let developmentArg = development.asRubyArgument(name: "development", type: nil)
9775
9969
  let skipInstallArg = skipInstall.asRubyArgument(name: "skip_install", type: nil)
9776
9970
  let forceArg = force.asRubyArgument(name: "force", type: nil)
9971
+ let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
9777
9972
  let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
9778
9973
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
9779
9974
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -9798,6 +9993,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
9798
9993
  developmentArg,
9799
9994
  skipInstallArg,
9800
9995
  forceArg,
9996
+ includeMacInProfilesArg,
9801
9997
  appIdentifierArg,
9802
9998
  apiKeyPathArg,
9803
9999
  apiKeyArg,
@@ -10116,7 +10312,7 @@ public func slather(buildDirectory: OptionalConfigValue<String?> = .fastlaneDefa
10116
10312
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
10117
10313
  - headless: Enabling this option will prevent displaying the simulator window
10118
10314
  - overrideStatusBar: Enabling this option will automatically override the status bar to show 9:41 AM, full battery, and full reception (Adjust 'SNAPSHOT_SIMULATOR_WAIT_FOR_BOOT_TIMEOUT' environment variable if override status bar is not working. Might be because simulator is not fully booted. Defaults to 10 seconds)
10119
- - overrideStatusBarArguments: Fully customize the status bar by setting each option here. See `xcrun simctl status_bar --help`
10315
+ - overrideStatusBarArguments: Fully customize the status bar by setting each option here. Requires `override_status_bar` to be set to `true`. See `xcrun simctl status_bar --help`
10120
10316
  - localizeSimulator: Enabling this option will configure the Simulator's system language
10121
10317
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
10122
10318
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
@@ -10127,7 +10323,6 @@ public func slather(buildDirectory: OptionalConfigValue<String?> = .fastlaneDefa
10127
10323
  - clean: Should the project be cleaned before building it?
10128
10324
  - testWithoutBuilding: Test without building, requires a derived data path
10129
10325
  - configuration: The configuration to use when building the app. Defaults to 'Release'
10130
- - xcprettyArgs: Additional xcpretty arguments
10131
10326
  - sdk: The SDK that should be used for building the application
10132
10327
  - scheme: The scheme you want to use, this must be the scheme for the UI Tests
10133
10328
  - numberOfRetries: The number of times a test can fail before snapshot should stop retrying
@@ -10144,6 +10339,8 @@ public func slather(buildDirectory: OptionalConfigValue<String?> = .fastlaneDefa
10144
10339
  - testplan: The testplan associated with the scheme that should be used for testing
10145
10340
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
10146
10341
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
10342
+ - xcodebuildFormatter: xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
10343
+ - xcprettyArgs: **DEPRECATED!** Use `xcodebuild_formatter: ''` instead - Additional xcpretty arguments
10147
10344
  - disableXcpretty: Disable xcpretty formatting of build
10148
10345
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
10149
10346
  - useSystemScm: Lets xcodebuild use system's scm configuration
@@ -10176,7 +10373,6 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10176
10373
  clean: OptionalConfigValue<Bool> = .fastlaneDefault(snapshotfile.clean),
10177
10374
  testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(snapshotfile.testWithoutBuilding),
10178
10375
  configuration: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.configuration),
10179
- xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.xcprettyArgs),
10180
10376
  sdk: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.sdk),
10181
10377
  scheme: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.scheme),
10182
10378
  numberOfRetries: Int = snapshotfile.numberOfRetries,
@@ -10193,6 +10389,8 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10193
10389
  testplan: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.testplan),
10194
10390
  onlyTesting: Any? = snapshotfile.onlyTesting,
10195
10391
  skipTesting: Any? = snapshotfile.skipTesting,
10392
+ xcodebuildFormatter: String = snapshotfile.xcodebuildFormatter,
10393
+ xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.xcprettyArgs),
10196
10394
  disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(snapshotfile.disableXcpretty),
10197
10395
  suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(snapshotfile.suppressXcodeOutput),
10198
10396
  useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(snapshotfile.useSystemScm))
@@ -10225,7 +10423,6 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10225
10423
  let cleanArg = clean.asRubyArgument(name: "clean", type: nil)
10226
10424
  let testWithoutBuildingArg = testWithoutBuilding.asRubyArgument(name: "test_without_building", type: nil)
10227
10425
  let configurationArg = configuration.asRubyArgument(name: "configuration", type: nil)
10228
- let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
10229
10426
  let sdkArg = sdk.asRubyArgument(name: "sdk", type: nil)
10230
10427
  let schemeArg = scheme.asRubyArgument(name: "scheme", type: nil)
10231
10428
  let numberOfRetriesArg = RubyCommand.Argument(name: "number_of_retries", value: numberOfRetries, type: nil)
@@ -10242,6 +10439,8 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10242
10439
  let testplanArg = testplan.asRubyArgument(name: "testplan", type: nil)
10243
10440
  let onlyTestingArg = RubyCommand.Argument(name: "only_testing", value: onlyTesting, type: nil)
10244
10441
  let skipTestingArg = RubyCommand.Argument(name: "skip_testing", value: skipTesting, type: nil)
10442
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
10443
+ let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
10245
10444
  let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
10246
10445
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
10247
10446
  let useSystemScmArg = useSystemScm.asRubyArgument(name: "use_system_scm", type: nil)
@@ -10273,7 +10472,6 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10273
10472
  cleanArg,
10274
10473
  testWithoutBuildingArg,
10275
10474
  configurationArg,
10276
- xcprettyArgsArg,
10277
10475
  sdkArg,
10278
10476
  schemeArg,
10279
10477
  numberOfRetriesArg,
@@ -10290,6 +10488,8 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10290
10488
  testplanArg,
10291
10489
  onlyTestingArg,
10292
10490
  skipTestingArg,
10491
+ xcodebuildFormatterArg,
10492
+ xcprettyArgsArg,
10293
10493
  disableXcprettyArg,
10294
10494
  suppressXcodeOutputArg,
10295
10495
  useSystemScmArg]
@@ -10668,6 +10868,7 @@ public func ssh(username: String,
10668
10868
  - skipUploadImages: Whether to skip uploading images, screenshots not included
10669
10869
  - skipUploadScreenshots: Whether to skip uploading SCREENSHOTS
10670
10870
  - trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
10871
+ - trackPromoteReleaseStatus: Promoted track release status (used when promoting a track) - valid values are completed, draft, halted, inProgress
10671
10872
  - validateOnly: Only validate changes with Google Play rather than actually publish
10672
10873
  - mapping: Path to the mapping file to upload (mapping.txt or native-debug-symbols.zip alike)
10673
10874
  - mappingPaths: An array of paths to mapping files to upload (mapping.txt or native-debug-symbols.zip alike)
@@ -10709,6 +10910,7 @@ public func supply(packageName: String,
10709
10910
  skipUploadImages: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10710
10911
  skipUploadScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10711
10912
  trackPromoteTo: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10913
+ trackPromoteReleaseStatus: String = "completed",
10712
10914
  validateOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10713
10915
  mapping: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10714
10916
  mappingPaths: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
@@ -10748,6 +10950,7 @@ public func supply(packageName: String,
10748
10950
  let skipUploadImagesArg = skipUploadImages.asRubyArgument(name: "skip_upload_images", type: nil)
10749
10951
  let skipUploadScreenshotsArg = skipUploadScreenshots.asRubyArgument(name: "skip_upload_screenshots", type: nil)
10750
10952
  let trackPromoteToArg = trackPromoteTo.asRubyArgument(name: "track_promote_to", type: nil)
10953
+ let trackPromoteReleaseStatusArg = RubyCommand.Argument(name: "track_promote_release_status", value: trackPromoteReleaseStatus, type: nil)
10751
10954
  let validateOnlyArg = validateOnly.asRubyArgument(name: "validate_only", type: nil)
10752
10955
  let mappingArg = mapping.asRubyArgument(name: "mapping", type: nil)
10753
10956
  let mappingPathsArg = mappingPaths.asRubyArgument(name: "mapping_paths", type: nil)
@@ -10786,6 +10989,7 @@ public func supply(packageName: String,
10786
10989
  skipUploadImagesArg,
10787
10990
  skipUploadScreenshotsArg,
10788
10991
  trackPromoteToArg,
10992
+ trackPromoteReleaseStatusArg,
10789
10993
  validateOnlyArg,
10790
10994
  mappingArg,
10791
10995
  mappingPathsArg,
@@ -10882,7 +11086,7 @@ public func swiftlint(mode: String = "lint",
10882
11086
  Easily sync your certificates and profiles across your team (via _match_)
10883
11087
 
10884
11088
  - parameters:
10885
- - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
11089
+ - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution, developer_id_installer
10886
11090
  - additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
10887
11091
  - readonly: Only fetch existing certificates and profiles, don't generate new ones
10888
11092
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
@@ -10906,18 +11110,22 @@ public func swiftlint(mode: String = "lint",
10906
11110
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
10907
11111
  - googleCloudKeysFile: Path to the gc_keys.json file
10908
11112
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
11113
+ - skipGoogleCloudAccountConfirmation: Skips confirming to use the system google account
10909
11114
  - s3Region: Name of the S3 region
10910
11115
  - s3AccessKey: S3 access key
10911
11116
  - s3SecretAccessKey: S3 secret access key
10912
11117
  - s3Bucket: Name of the S3 bucket
10913
11118
  - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
11119
+ - gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
10914
11120
  - keychainName: Keychain the items should be imported to
10915
11121
  - keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
10916
11122
  - force: Renew the provisioning profiles every time you run match
10917
11123
  - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile types 'appstore' and 'developer_id'
11124
+ - includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
10918
11125
  - includeAllCertificates: Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
10919
- - forceForNewCertificates: Renew the provisioning profiles if the device count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
11126
+ - forceForNewCertificates: Renew the provisioning profiles if the certificate count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
10920
11127
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
11128
+ - safeRemoveCerts: Remove certs from repository during nuke without revoking them on the developer portal
10921
11129
  - skipDocs: Skip generation of a README.md for the created git repository
10922
11130
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
10923
11131
  - 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
@@ -10955,18 +11163,22 @@ public func syncCodeSigning(type: String = "development",
10955
11163
  googleCloudBucketName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10956
11164
  googleCloudKeysFile: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10957
11165
  googleCloudProjectId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11166
+ skipGoogleCloudAccountConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10958
11167
  s3Region: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10959
11168
  s3AccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10960
11169
  s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10961
11170
  s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10962
11171
  s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11172
+ gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10963
11173
  keychainName: String = "login.keychain",
10964
11174
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10965
11175
  force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10966
11176
  forceForNewDevices: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11177
+ includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10967
11178
  includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10968
11179
  forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10969
11180
  skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11181
+ safeRemoveCerts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10970
11182
  skipDocs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10971
11183
  platform: String = "ios",
10972
11184
  deriveCatalystAppIdentifier: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -11002,18 +11214,22 @@ public func syncCodeSigning(type: String = "development",
11002
11214
  let googleCloudBucketNameArg = googleCloudBucketName.asRubyArgument(name: "google_cloud_bucket_name", type: nil)
11003
11215
  let googleCloudKeysFileArg = googleCloudKeysFile.asRubyArgument(name: "google_cloud_keys_file", type: nil)
11004
11216
  let googleCloudProjectIdArg = googleCloudProjectId.asRubyArgument(name: "google_cloud_project_id", type: nil)
11217
+ let skipGoogleCloudAccountConfirmationArg = skipGoogleCloudAccountConfirmation.asRubyArgument(name: "skip_google_cloud_account_confirmation", type: nil)
11005
11218
  let s3RegionArg = s3Region.asRubyArgument(name: "s3_region", type: nil)
11006
11219
  let s3AccessKeyArg = s3AccessKey.asRubyArgument(name: "s3_access_key", type: nil)
11007
11220
  let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
11008
11221
  let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
11009
11222
  let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
11223
+ let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
11010
11224
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
11011
11225
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
11012
11226
  let forceArg = force.asRubyArgument(name: "force", type: nil)
11013
11227
  let forceForNewDevicesArg = forceForNewDevices.asRubyArgument(name: "force_for_new_devices", type: nil)
11228
+ let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
11014
11229
  let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
11015
11230
  let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
11016
11231
  let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
11232
+ let safeRemoveCertsArg = safeRemoveCerts.asRubyArgument(name: "safe_remove_certs", type: nil)
11017
11233
  let skipDocsArg = skipDocs.asRubyArgument(name: "skip_docs", type: nil)
11018
11234
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
11019
11235
  let deriveCatalystAppIdentifierArg = deriveCatalystAppIdentifier.asRubyArgument(name: "derive_catalyst_app_identifier", type: nil)
@@ -11048,18 +11264,22 @@ public func syncCodeSigning(type: String = "development",
11048
11264
  googleCloudBucketNameArg,
11049
11265
  googleCloudKeysFileArg,
11050
11266
  googleCloudProjectIdArg,
11267
+ skipGoogleCloudAccountConfirmationArg,
11051
11268
  s3RegionArg,
11052
11269
  s3AccessKeyArg,
11053
11270
  s3SecretAccessKeyArg,
11054
11271
  s3BucketArg,
11055
11272
  s3ObjectPrefixArg,
11273
+ gitlabProjectArg,
11056
11274
  keychainNameArg,
11057
11275
  keychainPasswordArg,
11058
11276
  forceArg,
11059
11277
  forceForNewDevicesArg,
11278
+ includeMacInProfilesArg,
11060
11279
  includeAllCertificatesArg,
11061
11280
  forceForNewCertificatesArg,
11062
11281
  skipConfirmationArg,
11282
+ safeRemoveCertsArg,
11063
11283
  skipDocsArg,
11064
11284
  platformArg,
11065
11285
  deriveCatalystAppIdentifierArg,
@@ -11204,6 +11424,7 @@ public func testfairy(apiKey: String,
11204
11424
  - waitProcessingTimeoutDuration: Timeout duration in seconds to wait for App Store Connect processing. If set, after exceeding timeout duration, this will `force stop` to wait for App Store Connect processing and exit with exception
11205
11425
  - waitForUploadedBuild: **DEPRECATED!** No longer needed with the transition over to the App Store Connect API - Use version info from uploaded ipa file to determine what build to use for distribution. If set to false, latest processing or any latest build will be used
11206
11426
  - rejectBuildWaitingForReview: Expire previous if it's 'waiting for review'
11427
+ - submitBetaReview: Send the build for a beta review
11207
11428
 
11208
11429
  More details can be found on https://docs.fastlane.tools/actions/pilot/.
11209
11430
  This integration will only do the TestFlight upload.
@@ -11245,7 +11466,8 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11245
11466
  waitProcessingInterval: Int = 30,
11246
11467
  waitProcessingTimeoutDuration: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
11247
11468
  waitForUploadedBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11248
- rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false))
11469
+ rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11470
+ submitBetaReview: OptionalConfigValue<Bool> = .fastlaneDefault(true))
11249
11471
  {
11250
11472
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
11251
11473
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -11285,6 +11507,7 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11285
11507
  let waitProcessingTimeoutDurationArg = waitProcessingTimeoutDuration.asRubyArgument(name: "wait_processing_timeout_duration", type: nil)
11286
11508
  let waitForUploadedBuildArg = waitForUploadedBuild.asRubyArgument(name: "wait_for_uploaded_build", type: nil)
11287
11509
  let rejectBuildWaitingForReviewArg = rejectBuildWaitingForReview.asRubyArgument(name: "reject_build_waiting_for_review", type: nil)
11510
+ let submitBetaReviewArg = submitBetaReview.asRubyArgument(name: "submit_beta_review", type: nil)
11288
11511
  let array: [RubyCommand.Argument?] = [apiKeyPathArg,
11289
11512
  apiKeyArg,
11290
11513
  usernameArg,
@@ -11322,7 +11545,8 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11322
11545
  waitProcessingIntervalArg,
11323
11546
  waitProcessingTimeoutDurationArg,
11324
11547
  waitForUploadedBuildArg,
11325
- rejectBuildWaitingForReviewArg]
11548
+ rejectBuildWaitingForReviewArg,
11549
+ submitBetaReviewArg]
11326
11550
  let args: [RubyCommand.Argument] = array
11327
11551
  .filter { $0?.value != nil }
11328
11552
  .compactMap { $0 }
@@ -11330,6 +11554,53 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11330
11554
  _ = runner.executeCommand(command)
11331
11555
  }
11332
11556
 
11557
+ /**
11558
+ Convert the Xcode plist log to a JUnit report
11559
+
11560
+ - parameters:
11561
+ - path: Path to the directory that should be converted
11562
+ - extension: The extension for the newly created file. Usually .xml or .junit
11563
+ - outputDirectory: Directory in which the xml files should be written to. Same directory as source by default
11564
+ - outputFilename: Filename the xml file should be written to. Defaults to name of input file. (Only works if one input file is used)
11565
+ - failBuild: Should this step stop the build if the tests fail? Set this to false if you're handling this with a test reporter
11566
+ - xcprettyNaming: Produces class name and test name identical to xcpretty naming in junit file
11567
+ - silent: Silences all output
11568
+ - outputRemoveRetryAttempts: Doesn't include retry attempts in the output
11569
+
11570
+ - returns: A hash with the key being the path of the generated file, the value being if the tests were successful
11571
+ */
11572
+ public func trainer(path: String = ".",
11573
+ extension: String = ".xml",
11574
+ outputDirectory: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11575
+ outputFilename: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11576
+ failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(true),
11577
+ xcprettyNaming: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11578
+ silent: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11579
+ outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(false))
11580
+ {
11581
+ let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
11582
+ let extensionArg = RubyCommand.Argument(name: "extension", value: `extension`, type: nil)
11583
+ let outputDirectoryArg = outputDirectory.asRubyArgument(name: "output_directory", type: nil)
11584
+ let outputFilenameArg = outputFilename.asRubyArgument(name: "output_filename", type: nil)
11585
+ let failBuildArg = failBuild.asRubyArgument(name: "fail_build", type: nil)
11586
+ let xcprettyNamingArg = xcprettyNaming.asRubyArgument(name: "xcpretty_naming", type: nil)
11587
+ let silentArg = silent.asRubyArgument(name: "silent", type: nil)
11588
+ let outputRemoveRetryAttemptsArg = outputRemoveRetryAttempts.asRubyArgument(name: "output_remove_retry_attempts", type: nil)
11589
+ let array: [RubyCommand.Argument?] = [pathArg,
11590
+ extensionArg,
11591
+ outputDirectoryArg,
11592
+ outputFilenameArg,
11593
+ failBuildArg,
11594
+ xcprettyNamingArg,
11595
+ silentArg,
11596
+ outputRemoveRetryAttemptsArg]
11597
+ let args: [RubyCommand.Argument] = array
11598
+ .filter { $0?.value != nil }
11599
+ .compactMap { $0 }
11600
+ let command = RubyCommand(commandID: "", methodName: "trainer", className: nil, args: args)
11601
+ _ = runner.executeCommand(command)
11602
+ }
11603
+
11333
11604
  /**
11334
11605
  Upload a new build to [Tryouts](https://tryouts.io/)
11335
11606
 
@@ -11505,10 +11776,12 @@ public func updateAppIdentifier(xcodeproj: String,
11505
11776
  - parameters:
11506
11777
  - path: Path to your Xcode project
11507
11778
  - useAutomaticSigning: Defines if project should use automatic signing
11779
+ - sdk: Build target SDKs (iphoneos*, macosx*, iphonesimulator*)
11508
11780
  - teamId: Team ID, is used when upgrading project
11509
11781
  - targets: Specify targets you want to toggle the signing mech. (default to all targets)
11510
11782
  - buildConfigurations: Specify build_configurations you want to toggle the signing mech. (default to all configurations)
11511
11783
  - codeSignIdentity: Code signing identity type (iPhone Developer, iPhone Distribution)
11784
+ - entitlementsFilePath: Path to your entitlements file
11512
11785
  - profileName: Provisioning profile name to use for code signing
11513
11786
  - profileUuid: Provisioning profile UUID to use for code signing
11514
11787
  - bundleIdentifier: Application Product Bundle Identifier
@@ -11519,29 +11792,35 @@ public func updateAppIdentifier(xcodeproj: String,
11519
11792
  */
11520
11793
  public func updateCodeSigningSettings(path: String,
11521
11794
  useAutomaticSigning: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11795
+ sdk: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11522
11796
  teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11523
11797
  targets: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
11524
11798
  buildConfigurations: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
11525
11799
  codeSignIdentity: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11800
+ entitlementsFilePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11526
11801
  profileName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11527
11802
  profileUuid: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11528
11803
  bundleIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil))
11529
11804
  {
11530
11805
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
11531
11806
  let useAutomaticSigningArg = useAutomaticSigning.asRubyArgument(name: "use_automatic_signing", type: nil)
11807
+ let sdkArg = sdk.asRubyArgument(name: "sdk", type: nil)
11532
11808
  let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
11533
11809
  let targetsArg = targets.asRubyArgument(name: "targets", type: nil)
11534
11810
  let buildConfigurationsArg = buildConfigurations.asRubyArgument(name: "build_configurations", type: nil)
11535
11811
  let codeSignIdentityArg = codeSignIdentity.asRubyArgument(name: "code_sign_identity", type: nil)
11812
+ let entitlementsFilePathArg = entitlementsFilePath.asRubyArgument(name: "entitlements_file_path", type: nil)
11536
11813
  let profileNameArg = profileName.asRubyArgument(name: "profile_name", type: nil)
11537
11814
  let profileUuidArg = profileUuid.asRubyArgument(name: "profile_uuid", type: nil)
11538
11815
  let bundleIdentifierArg = bundleIdentifier.asRubyArgument(name: "bundle_identifier", type: nil)
11539
11816
  let array: [RubyCommand.Argument?] = [pathArg,
11540
11817
  useAutomaticSigningArg,
11818
+ sdkArg,
11541
11819
  teamIdArg,
11542
11820
  targetsArg,
11543
11821
  buildConfigurationsArg,
11544
11822
  codeSignIdentityArg,
11823
+ entitlementsFilePathArg,
11545
11824
  profileNameArg,
11546
11825
  profileUuidArg,
11547
11826
  bundleIdentifierArg]
@@ -12033,8 +12312,9 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
12033
12312
  - skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
12034
12313
  - force: Skip verification of HTML preview file
12035
12314
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
12036
- - syncScreenshots: Sync screenshots with local ones. This is currently beta optionso set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
12315
+ - syncScreenshots: Sync screenshots with local ones. This is currently beta option so set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
12037
12316
  - submitForReview: Submit the new version for Review after uploading everything
12317
+ - verifyOnly: Verifies archive with App Store Connect without uploading
12038
12318
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
12039
12319
  - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
12040
12320
  - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
@@ -12106,6 +12386,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12106
12386
  overwriteScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12107
12387
  syncScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12108
12388
  submitForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12389
+ verifyOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12109
12390
  rejectIfPossible: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12110
12391
  automaticRelease: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
12111
12392
  autoReleaseDate: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
@@ -12170,6 +12451,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12170
12451
  let overwriteScreenshotsArg = overwriteScreenshots.asRubyArgument(name: "overwrite_screenshots", type: nil)
12171
12452
  let syncScreenshotsArg = syncScreenshots.asRubyArgument(name: "sync_screenshots", type: nil)
12172
12453
  let submitForReviewArg = submitForReview.asRubyArgument(name: "submit_for_review", type: nil)
12454
+ let verifyOnlyArg = verifyOnly.asRubyArgument(name: "verify_only", type: nil)
12173
12455
  let rejectIfPossibleArg = rejectIfPossible.asRubyArgument(name: "reject_if_possible", type: nil)
12174
12456
  let automaticReleaseArg = automaticRelease.asRubyArgument(name: "automatic_release", type: nil)
12175
12457
  let autoReleaseDateArg = autoReleaseDate.asRubyArgument(name: "auto_release_date", type: nil)
@@ -12233,6 +12515,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12233
12515
  overwriteScreenshotsArg,
12234
12516
  syncScreenshotsArg,
12235
12517
  submitForReviewArg,
12518
+ verifyOnlyArg,
12236
12519
  rejectIfPossibleArg,
12237
12520
  automaticReleaseArg,
12238
12521
  autoReleaseDateArg,
@@ -12308,6 +12591,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12308
12591
  - skipUploadImages: Whether to skip uploading images, screenshots not included
12309
12592
  - skipUploadScreenshots: Whether to skip uploading SCREENSHOTS
12310
12593
  - trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
12594
+ - trackPromoteReleaseStatus: Promoted track release status (used when promoting a track) - valid values are completed, draft, halted, inProgress
12311
12595
  - validateOnly: Only validate changes with Google Play rather than actually publish
12312
12596
  - mapping: Path to the mapping file to upload (mapping.txt or native-debug-symbols.zip alike)
12313
12597
  - mappingPaths: An array of paths to mapping files to upload (mapping.txt or native-debug-symbols.zip alike)
@@ -12349,6 +12633,7 @@ public func uploadToPlayStore(packageName: String,
12349
12633
  skipUploadImages: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12350
12634
  skipUploadScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12351
12635
  trackPromoteTo: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12636
+ trackPromoteReleaseStatus: String = "completed",
12352
12637
  validateOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12353
12638
  mapping: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12354
12639
  mappingPaths: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
@@ -12388,6 +12673,7 @@ public func uploadToPlayStore(packageName: String,
12388
12673
  let skipUploadImagesArg = skipUploadImages.asRubyArgument(name: "skip_upload_images", type: nil)
12389
12674
  let skipUploadScreenshotsArg = skipUploadScreenshots.asRubyArgument(name: "skip_upload_screenshots", type: nil)
12390
12675
  let trackPromoteToArg = trackPromoteTo.asRubyArgument(name: "track_promote_to", type: nil)
12676
+ let trackPromoteReleaseStatusArg = RubyCommand.Argument(name: "track_promote_release_status", value: trackPromoteReleaseStatus, type: nil)
12391
12677
  let validateOnlyArg = validateOnly.asRubyArgument(name: "validate_only", type: nil)
12392
12678
  let mappingArg = mapping.asRubyArgument(name: "mapping", type: nil)
12393
12679
  let mappingPathsArg = mappingPaths.asRubyArgument(name: "mapping_paths", type: nil)
@@ -12426,6 +12712,7 @@ public func uploadToPlayStore(packageName: String,
12426
12712
  skipUploadImagesArg,
12427
12713
  skipUploadScreenshotsArg,
12428
12714
  trackPromoteToArg,
12715
+ trackPromoteReleaseStatusArg,
12429
12716
  validateOnlyArg,
12430
12717
  mappingArg,
12431
12718
  mappingPathsArg,
@@ -12544,6 +12831,7 @@ public func uploadToPlayStoreInternalAppSharing(packageName: String,
12544
12831
  - waitProcessingTimeoutDuration: Timeout duration in seconds to wait for App Store Connect processing. If set, after exceeding timeout duration, this will `force stop` to wait for App Store Connect processing and exit with exception
12545
12832
  - waitForUploadedBuild: **DEPRECATED!** No longer needed with the transition over to the App Store Connect API - Use version info from uploaded ipa file to determine what build to use for distribution. If set to false, latest processing or any latest build will be used
12546
12833
  - rejectBuildWaitingForReview: Expire previous if it's 'waiting for review'
12834
+ - submitBetaReview: Send the build for a beta review
12547
12835
 
12548
12836
  More details can be found on https://docs.fastlane.tools/actions/pilot/.
12549
12837
  This integration will only do the TestFlight upload.
@@ -12585,7 +12873,8 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12585
12873
  waitProcessingInterval: Int = 30,
12586
12874
  waitProcessingTimeoutDuration: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
12587
12875
  waitForUploadedBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12588
- rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false))
12876
+ rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12877
+ submitBetaReview: OptionalConfigValue<Bool> = .fastlaneDefault(true))
12589
12878
  {
12590
12879
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
12591
12880
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -12625,6 +12914,7 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12625
12914
  let waitProcessingTimeoutDurationArg = waitProcessingTimeoutDuration.asRubyArgument(name: "wait_processing_timeout_duration", type: nil)
12626
12915
  let waitForUploadedBuildArg = waitForUploadedBuild.asRubyArgument(name: "wait_for_uploaded_build", type: nil)
12627
12916
  let rejectBuildWaitingForReviewArg = rejectBuildWaitingForReview.asRubyArgument(name: "reject_build_waiting_for_review", type: nil)
12917
+ let submitBetaReviewArg = submitBetaReview.asRubyArgument(name: "submit_beta_review", type: nil)
12628
12918
  let array: [RubyCommand.Argument?] = [apiKeyPathArg,
12629
12919
  apiKeyArg,
12630
12920
  usernameArg,
@@ -12662,7 +12952,8 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12662
12952
  waitProcessingIntervalArg,
12663
12953
  waitProcessingTimeoutDurationArg,
12664
12954
  waitForUploadedBuildArg,
12665
- rejectBuildWaitingForReviewArg]
12955
+ rejectBuildWaitingForReviewArg,
12956
+ submitBetaReviewArg]
12666
12957
  let args: [RubyCommand.Argument] = array
12667
12958
  .filter { $0?.value != nil }
12668
12959
  .compactMap { $0 }
@@ -12908,7 +13199,7 @@ public func xcexport() {
12908
13199
  Change the xcode-path to use. Useful for beta versions of Xcode
12909
13200
 
12910
13201
  Select and build with the Xcode installed at the provided path.
12911
- Use the `xcversion` action if you want to select an Xcode:
13202
+ Use the `xcodes` action if you want to select an Xcode:
12912
13203
  - Based on a version specifier or
12913
13204
  - You don't have known, stable paths, as may happen in a CI environment.
12914
13205
  */
@@ -12978,6 +13269,45 @@ public func xcodebuild() {
12978
13269
  _ = runner.executeCommand(command)
12979
13270
  }
12980
13271
 
13272
+ /**
13273
+ Make sure a certain version of Xcode is installed, installing it only if needed
13274
+
13275
+ - parameters:
13276
+ - version: The version number of the version of Xcode to install. Defaults to the value specified in the .xcode-version file
13277
+ - updateList: Whether the list of available Xcode versions should be updated before running the install command
13278
+ - selectForCurrentBuildOnly: When true, it won't attempt to install an Xcode version, just find the installed Xcode version that best matches the passed version argument, and select it for the current build steps. It doesn't change the global Xcode version (e.g. via 'xcrun xcode-select'), which would require sudo permissions — when this option is true, this action doesn't require sudo permissions
13279
+ - binaryPath: Where the xcodes binary lives on your system (full path)
13280
+ - xcodesArgs: Pass in xcodes command line arguments directly. When present, other parameters are ignored and only this parameter is used to build the command to be executed
13281
+
13282
+ - returns: The path to the newly installed Xcode version
13283
+
13284
+ Makes sure a specific version of Xcode is installed. If that's not the case, it will automatically be downloaded by [xcodes](https://github.com/RobotsAndPencils/xcodes).
13285
+ This will make sure to use the correct Xcode version for later actions.
13286
+ Note that this action depends on [xcodes](https://github.com/RobotsAndPencils/xcodes) CLI, so make sure you have it installed in your environment. For the installation guide, see: https://github.com/RobotsAndPencils/xcodes#installation
13287
+ */
13288
+ @discardableResult public func xcodes(version: String,
13289
+ updateList: OptionalConfigValue<Bool> = .fastlaneDefault(true),
13290
+ selectForCurrentBuildOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
13291
+ binaryPath: String = "/opt/homebrew/bin/xcodes",
13292
+ xcodesArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil)) -> String
13293
+ {
13294
+ let versionArg = RubyCommand.Argument(name: "version", value: version, type: nil)
13295
+ let updateListArg = updateList.asRubyArgument(name: "update_list", type: nil)
13296
+ let selectForCurrentBuildOnlyArg = selectForCurrentBuildOnly.asRubyArgument(name: "select_for_current_build_only", type: nil)
13297
+ let binaryPathArg = RubyCommand.Argument(name: "binary_path", value: binaryPath, type: nil)
13298
+ let xcodesArgsArg = xcodesArgs.asRubyArgument(name: "xcodes_args", type: nil)
13299
+ let array: [RubyCommand.Argument?] = [versionArg,
13300
+ updateListArg,
13301
+ selectForCurrentBuildOnlyArg,
13302
+ binaryPathArg,
13303
+ xcodesArgsArg]
13304
+ let args: [RubyCommand.Argument] = array
13305
+ .filter { $0?.value != nil }
13306
+ .compactMap { $0 }
13307
+ let command = RubyCommand(commandID: "", methodName: "xcodes", className: nil, args: args)
13308
+ return runner.executeCommand(command)
13309
+ }
13310
+
12981
13311
  /**
12982
13312
  Nice code coverage reports without hassle
12983
13313
 
@@ -13040,7 +13370,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
13040
13370
  coverallsServiceJobId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13041
13371
  coverallsRepoToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13042
13372
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13043
- ideFoundationPath: String = "/Applications/Xcode.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13373
+ ideFoundationPath: String = "/Applications/Xcode-14.1.0.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13044
13374
  legacySupport: OptionalConfigValue<Bool> = .fastlaneDefault(false))
13045
13375
  {
13046
13376
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
@@ -13131,9 +13461,10 @@ public func xctool() {
13131
13461
  /**
13132
13462
  Select an Xcode to use by version specifier
13133
13463
 
13134
- - parameter version: The version of Xcode to select specified as a Gem::Version requirement string (e.g. '~> 7.1.0')
13464
+ - parameter version: The version of Xcode to select specified as a Gem::Version requirement string (e.g. '~> 7.1.0'). Defaults to the value specified in the .xcode-version file
13135
13465
 
13136
13466
  Finds and selects a version of an installed Xcode that best matches the provided [`Gem::Version` requirement specifier](http://www.rubydoc.info/github/rubygems/rubygems/Gem/Version)
13467
+ You can either manually provide a specific version using `version:` or you make use of the `.xcode-version` file.
13137
13468
  */
13138
13469
  public func xcversion(version: String) {
13139
13470
  let versionArg = RubyCommand.Argument(name: "version", value: version, type: nil)
@@ -13232,14 +13563,14 @@ func parseInt(fromString: String, function: String = #function) -> Int {
13232
13563
  return NSString(string: fromString.trimmingCharacters(in: .punctuationCharacters)).integerValue
13233
13564
  }
13234
13565
 
13235
- public let deliverfile = Deliverfile()
13236
- public let gymfile = Gymfile()
13237
- public let matchfile = Matchfile()
13238
- public let precheckfile = Precheckfile()
13239
- public let scanfile = Scanfile()
13240
- public let screengrabfile = Screengrabfile()
13241
- public let snapshotfile = Snapshotfile()
13566
+ public let deliverfile: Deliverfile = .init()
13567
+ public let gymfile: Gymfile = .init()
13568
+ public let matchfile: Matchfile = .init()
13569
+ public let precheckfile: Precheckfile = .init()
13570
+ public let scanfile: Scanfile = .init()
13571
+ public let screengrabfile: Screengrabfile = .init()
13572
+ public let snapshotfile: Snapshotfile = .init()
13242
13573
 
13243
13574
  // Please don't remove the lines below
13244
13575
  // They are used to detect outdated files
13245
- // FastlaneRunnerAPIVersion [0.9.138]
13576
+ // FastlaneRunnerAPIVersion [0.9.168]