fastlane 2.195.0 → 2.213.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (214) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +96 -89
  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/app_store_build_number.rb +12 -6
  16. data/fastlane/lib/fastlane/actions/badge.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +1 -1
  18. data/fastlane/lib/fastlane/actions/danger.rb +14 -0
  19. data/fastlane/lib/fastlane/actions/docs/build_app.md +5 -5
  20. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +19 -2
  21. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
  22. data/fastlane/lib/fastlane/actions/docs/run_tests.md +1 -1
  23. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -1
  24. data/fastlane/lib/fastlane/actions/download_dsyms.rb +62 -46
  25. data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +44 -5
  26. data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +1 -1
  27. data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/get_version_number.rb +8 -3
  29. data/fastlane/lib/fastlane/actions/git_commit.rb +4 -6
  30. data/fastlane/lib/fastlane/actions/import_certificate.rb +1 -1
  31. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -3
  32. data/fastlane/lib/fastlane/actions/notarize.rb +29 -11
  33. data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +1 -1
  34. data/fastlane/lib/fastlane/actions/pod_push.rb +19 -1
  35. data/fastlane/lib/fastlane/actions/read_podspec.rb +1 -1
  36. data/fastlane/lib/fastlane/actions/run_tests.rb +19 -9
  37. data/fastlane/lib/fastlane/actions/set_github_release.rb +11 -5
  38. data/fastlane/lib/fastlane/actions/setup_ci.rb +13 -4
  39. data/fastlane/lib/fastlane/actions/trainer.rb +49 -0
  40. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +31 -4
  41. data/fastlane/lib/fastlane/actions/update_info_plist.rb +1 -1
  42. data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +10 -1
  43. data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +1 -1
  44. data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
  45. data/fastlane/lib/fastlane/actions/xcode_install.rb +5 -1
  46. data/fastlane/lib/fastlane/actions/xcode_select.rb +1 -1
  47. data/fastlane/lib/fastlane/actions/xcodebuild.rb +8 -2
  48. data/fastlane/lib/fastlane/actions/xcodes.rb +152 -0
  49. data/fastlane/lib/fastlane/actions/xcov.rb +5 -0
  50. data/fastlane/lib/fastlane/actions/xcversion.rb +17 -7
  51. data/fastlane/lib/fastlane/cli_tools_distributor.rb +5 -0
  52. data/fastlane/lib/fastlane/commands_generator.rb +2 -1
  53. data/fastlane/lib/fastlane/documentation/docs_generator.rb +17 -12
  54. data/fastlane/lib/fastlane/fast_file.rb +18 -5
  55. data/fastlane/lib/fastlane/features.rb +3 -0
  56. data/fastlane/lib/fastlane/helper/xcodebuild_formatter_helper.rb +9 -0
  57. data/fastlane/lib/fastlane/helper/xcodes_helper.rb +28 -0
  58. data/fastlane/lib/fastlane/helper/xcversion_helper.rb +0 -9
  59. data/fastlane/lib/fastlane/lane_manager.rb +1 -1
  60. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
  61. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
  62. data/fastlane/lib/fastlane/setup/setup_ios.rb +1 -1
  63. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -1
  64. data/fastlane/lib/fastlane/swift_lane_manager.rb +11 -3
  65. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +54 -1
  66. data/fastlane/lib/fastlane/tools.rb +18 -1
  67. data/fastlane/lib/fastlane/version.rb +1 -1
  68. data/fastlane/swift/Actions.swift +1 -1
  69. data/fastlane/swift/Appfile.swift +2 -2
  70. data/fastlane/swift/ArgumentProcessor.swift +1 -1
  71. data/fastlane/swift/Atomic.swift +150 -0
  72. data/fastlane/swift/ControlCommand.swift +1 -1
  73. data/fastlane/swift/Deliverfile.swift +2 -2
  74. data/fastlane/swift/DeliverfileProtocol.swift +8 -4
  75. data/fastlane/swift/Fastlane.swift +604 -249
  76. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +30 -20
  77. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +1 -1
  78. data/fastlane/swift/Gymfile.swift +2 -2
  79. data/fastlane/swift/GymfileProtocol.swift +20 -8
  80. data/fastlane/swift/LaneFileProtocol.swift +3 -3
  81. data/fastlane/swift/MainProcess.swift +3 -3
  82. data/fastlane/swift/Matchfile.swift +2 -2
  83. data/fastlane/swift/MatchfileProtocol.swift +25 -5
  84. data/fastlane/swift/OptionalConfigValue.swift +1 -1
  85. data/fastlane/swift/Plugins.swift +1 -1
  86. data/fastlane/swift/Precheckfile.swift +2 -2
  87. data/fastlane/swift/PrecheckfileProtocol.swift +3 -3
  88. data/fastlane/swift/RubyCommand.swift +1 -1
  89. data/fastlane/swift/RubyCommandable.swift +1 -1
  90. data/fastlane/swift/Runner.swift +14 -10
  91. data/fastlane/swift/RunnerArgument.swift +1 -1
  92. data/fastlane/swift/Scanfile.swift +2 -2
  93. data/fastlane/swift/ScanfileProtocol.swift +35 -11
  94. data/fastlane/swift/Screengrabfile.swift +2 -2
  95. data/fastlane/swift/ScreengrabfileProtocol.swift +5 -5
  96. data/fastlane/swift/Snapshotfile.swift +2 -2
  97. data/fastlane/swift/SnapshotfileProtocol.swift +12 -8
  98. data/fastlane/swift/SocketClient.swift +9 -5
  99. data/fastlane/swift/SocketClientDelegateProtocol.swift +2 -2
  100. data/fastlane/swift/SocketResponse.swift +1 -1
  101. data/fastlane/swift/formatting/Brewfile.lock.json +47 -24
  102. data/fastlane/swift/main.swift +1 -1
  103. data/fastlane/swift/upgrade_manifest.json +1 -1
  104. data/fastlane_core/README.md +1 -0
  105. data/fastlane_core/lib/fastlane_core/cert_checker.rb +74 -17
  106. data/fastlane_core/lib/fastlane_core/device_manager.rb +5 -1
  107. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +10 -5
  108. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +409 -26
  109. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -0
  110. data/fastlane_core/lib/fastlane_core/project.rb +19 -2
  111. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +7 -0
  112. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +4 -2
  113. data/frameit/lib/frameit/device.rb +1 -1
  114. data/frameit/lib/frameit/device_types.rb +9 -0
  115. data/frameit/lib/frameit/editor.rb +16 -18
  116. data/frameit/lib/frameit/frame_downloader.rb +1 -1
  117. data/frameit/lib/frameit/trim_box.rb +6 -0
  118. data/gym/lib/gym/generators/build_command_generator.rb +70 -23
  119. data/gym/lib/gym/options.rb +30 -5
  120. data/match/lib/match/change_password.rb +2 -0
  121. data/match/lib/match/commands_generator.rb +2 -1
  122. data/match/lib/match/encryption/openssl.rb +1 -1
  123. data/match/lib/match/encryption.rb +3 -0
  124. data/match/lib/match/generator.rb +1 -0
  125. data/match/lib/match/importer.rb +11 -1
  126. data/match/lib/match/migrate.rb +4 -3
  127. data/match/lib/match/module.rb +54 -2
  128. data/match/lib/match/nuke.rb +115 -47
  129. data/match/lib/match/options.rb +27 -1
  130. data/match/lib/match/runner.rb +26 -6
  131. data/match/lib/match/setup.rb +1 -1
  132. data/match/lib/match/spaceship_ensure.rb +5 -2
  133. data/match/lib/match/storage/gitlab/client.rb +102 -0
  134. data/match/lib/match/storage/gitlab/secure_file.rb +65 -0
  135. data/match/lib/match/storage/gitlab_secure_files.rb +188 -0
  136. data/match/lib/match/storage/google_cloud_storage.rb +7 -6
  137. data/match/lib/match/storage/s3_storage.rb +3 -3
  138. data/match/lib/match/storage.rb +4 -0
  139. data/match/lib/match/table_printer.rb +2 -1
  140. data/match/lib/match/utils.rb +15 -2
  141. data/pem/lib/pem/manager.rb +32 -8
  142. data/pem/lib/pem/options.rb +10 -1
  143. data/pilot/lib/pilot/build_manager.rb +34 -14
  144. data/pilot/lib/pilot/options.rb +6 -1
  145. data/scan/lib/scan/detect_values.rb +14 -1
  146. data/scan/lib/scan/error_handler.rb +9 -0
  147. data/scan/lib/scan/options.rb +54 -9
  148. data/scan/lib/scan/runner.rb +171 -25
  149. data/scan/lib/scan/test_command_generator.rb +65 -5
  150. data/screengrab/lib/screengrab/options.rb +2 -2
  151. data/sigh/lib/assets/resign.sh +8 -5
  152. data/sigh/lib/sigh/download_all.rb +14 -2
  153. data/sigh/lib/sigh/module.rb +3 -1
  154. data/sigh/lib/sigh/options.rb +5 -0
  155. data/sigh/lib/sigh/runner.rb +12 -2
  156. data/snapshot/lib/assets/SnapshotHelper.swift +3 -3
  157. data/snapshot/lib/snapshot/latest_os_version.rb +2 -5
  158. data/snapshot/lib/snapshot/options.rb +24 -8
  159. data/snapshot/lib/snapshot/reports_generator.rb +9 -0
  160. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +10 -3
  161. data/snapshot/lib/snapshot/test_command_generator.rb +37 -2
  162. data/spaceship/lib/spaceship/client.rb +71 -40
  163. data/spaceship/lib/spaceship/commands_generator.rb +1 -1
  164. data/spaceship/lib/spaceship/connect_api/api_client.rb +10 -5
  165. data/spaceship/lib/spaceship/connect_api/models/actor.rb +26 -0
  166. data/spaceship/lib/spaceship/connect_api/models/app.rb +52 -6
  167. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +1 -0
  168. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +5 -0
  169. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +7 -0
  170. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -1
  171. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +27 -10
  172. data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -2
  173. data/spaceship/lib/spaceship/connect_api/models/build_bundle.rb +68 -0
  174. data/spaceship/lib/spaceship/connect_api/models/build_bundle_file_sizes.rb +34 -0
  175. data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +2 -1
  176. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +4 -0
  177. data/spaceship/lib/spaceship/connect_api/models/device.rb +47 -4
  178. data/spaceship/lib/spaceship/connect_api/models/profile.rb +4 -0
  179. data/spaceship/lib/spaceship/connect_api/models/resolution_center_message.rb +29 -0
  180. data/spaceship/lib/spaceship/connect_api/models/resolution_center_thread.rb +67 -0
  181. data/spaceship/lib/spaceship/connect_api/models/review_rejection.rb +19 -0
  182. data/spaceship/lib/spaceship/connect_api/models/review_submission.rb +86 -0
  183. data/spaceship/lib/spaceship/connect_api/models/review_submission_item.rb +40 -0
  184. data/spaceship/lib/spaceship/connect_api/models/user.rb +5 -0
  185. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +19 -0
  186. data/spaceship/lib/spaceship/connect_api/response.rb +23 -6
  187. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +33 -2
  188. data/spaceship/lib/spaceship/connect_api/token.rb +6 -3
  189. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +124 -8
  190. data/spaceship/lib/spaceship/connect_api.rb +9 -0
  191. data/spaceship/lib/spaceship/errors.rb +34 -0
  192. data/spaceship/lib/spaceship/globals.rb +9 -0
  193. data/spaceship/lib/spaceship/hashcash.rb +52 -0
  194. data/spaceship/lib/spaceship/portal/certificate.rb +4 -3
  195. data/spaceship/lib/spaceship/spaceauth_runner.rb +1 -1
  196. data/spaceship/lib/spaceship/tunes/app_ratings.rb +6 -6
  197. data/spaceship/lib/spaceship/tunes/iap_families.rb +1 -1
  198. data/spaceship/lib/spaceship/tunes/tunes.rb +0 -1
  199. data/spaceship/lib/spaceship/tunes/tunes_client.rb +79 -21
  200. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +11 -3
  201. data/spaceship/lib/spaceship.rb +1 -0
  202. data/supply/lib/supply/client.rb +5 -10
  203. data/supply/lib/supply/options.rb +8 -0
  204. data/supply/lib/supply/uploader.rb +7 -3
  205. data/trainer/lib/assets/junit.xml.erb +28 -0
  206. data/trainer/lib/trainer/commands_generator.rb +51 -0
  207. data/trainer/lib/trainer/junit_generator.rb +31 -0
  208. data/trainer/lib/trainer/module.rb +10 -0
  209. data/trainer/lib/trainer/options.rb +66 -0
  210. data/trainer/lib/trainer/test_parser.rb +398 -0
  211. data/trainer/lib/trainer/xcresult.rb +403 -0
  212. data/trainer/lib/trainer.rb +7 -0
  213. metadata +73 -37
  214. 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,
@@ -1982,10 +2022,10 @@ public func bundleInstall(binstubs: OptionalConfigValue<String?> = .fastlaneDefa
1982
2022
  - endingLocale: **DEPRECATED!** Return the device to this locale after running tests
1983
2023
  - useAdbRoot: **DEPRECATED!** Restarts the adb daemon using `adb root` to allow access to screenshots directories on device. Use if getting 'Permission denied' errors
1984
2024
  - appApkPath: The path to the APK for the app under test
1985
- - testsApkPath: The path to the APK for the the tests bundle
2025
+ - testsApkPath: The path to the APK for the tests bundle
1986
2026
  - specificDevice: Use the device or emulator with the given serial number or qualifier
1987
2027
  - deviceType: Type of device used for screenshots. Matches Google Play Types (phone, sevenInch, tenInch, tv, wear)
1988
- - exitOnTestFailure: Whether or not to exit Screengrab on test failure. Exiting on failure will not copy sceenshots to local machine nor open sceenshots summary
2028
+ - exitOnTestFailure: Whether or not to exit Screengrab on test failure. Exiting on failure will not copy screenshots to local machine nor open screenshots summary
1989
2029
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
1990
2030
  - useTimestampSuffix: Add timestamp suffix to screenshot filename
1991
2031
  - adbHost: Configure the host used by adb to connect, allows running on remote devices farm
@@ -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,8 @@ 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)
4303
+ - ignoreFiles: Array of files to ignore
4235
4304
 
4236
4305
  A sanity check to make sure you are working in a repo that is clean.
4237
4306
  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.
@@ -4239,14 +4308,17 @@ public func ensureGitBranch(branch: String = "master") {
4239
4308
  */
4240
4309
  public func ensureGitStatusClean(showUncommittedChanges: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4241
4310
  showDiff: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4242
- ignored: OptionalConfigValue<String?> = .fastlaneDefault(nil))
4311
+ ignored: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4312
+ ignoreFiles: OptionalConfigValue<[String]?> = .fastlaneDefault(nil))
4243
4313
  {
4244
4314
  let showUncommittedChangesArg = showUncommittedChanges.asRubyArgument(name: "show_uncommitted_changes", type: nil)
4245
4315
  let showDiffArg = showDiff.asRubyArgument(name: "show_diff", type: nil)
4246
4316
  let ignoredArg = ignored.asRubyArgument(name: "ignored", type: nil)
4317
+ let ignoreFilesArg = ignoreFiles.asRubyArgument(name: "ignore_files", type: nil)
4247
4318
  let array: [RubyCommand.Argument?] = [showUncommittedChangesArg,
4248
4319
  showDiffArg,
4249
- ignoredArg]
4320
+ ignoredArg,
4321
+ ignoreFilesArg]
4250
4322
  let args: [RubyCommand.Argument] = array
4251
4323
  .filter { $0?.value != nil }
4252
4324
  .compactMap { $0 }
@@ -4303,7 +4375,7 @@ public func ensureNoDebugCode(text: String,
4303
4375
 
4304
4376
  If building your app requires a specific version of Xcode, you can invoke this command before using gym.
4305
4377
  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.
4378
+ You can either manually provide a specific version using `version:` or you make use of the `.xcode-version` file.
4307
4379
  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
4380
  */
4309
4381
  public func ensureXcodeVersion(version: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -4877,6 +4949,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
4877
4949
  - development: Renew the development certificate instead of the production one
4878
4950
  - skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
4879
4951
  - force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
4952
+ - includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
4880
4953
  - appIdentifier: The bundle identifier of your app
4881
4954
  - 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
4955
  - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)
@@ -4906,6 +4979,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
4906
4979
  development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4907
4980
  skipInstall: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4908
4981
  force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4982
+ includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4909
4983
  appIdentifier: String,
4910
4984
  apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4911
4985
  apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
@@ -4931,6 +5005,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
4931
5005
  let developmentArg = development.asRubyArgument(name: "development", type: nil)
4932
5006
  let skipInstallArg = skipInstall.asRubyArgument(name: "skip_install", type: nil)
4933
5007
  let forceArg = force.asRubyArgument(name: "force", type: nil)
5008
+ let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
4934
5009
  let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
4935
5010
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
4936
5011
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -4955,6 +5030,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
4955
5030
  developmentArg,
4956
5031
  skipInstallArg,
4957
5032
  forceArg,
5033
+ includeMacInProfilesArg,
4958
5034
  appIdentifierArg,
4959
5035
  apiKeyPathArg,
4960
5036
  apiKeyArg,
@@ -4985,6 +5061,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
4985
5061
  Ensure a valid push profile is active, creating a new one if needed (via _pem_)
4986
5062
 
4987
5063
  - parameters:
5064
+ - platform: Set certificate's platform. Used for creation of production & development certificates. Supported platforms: ios, macos
4988
5065
  - development: Renew the development push certificate instead of the production one
4989
5066
  - websitePush: Create a Website Push certificate
4990
5067
  - generateP12: Generate a p12 file additionally to a PEM file
@@ -5012,7 +5089,8 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
5012
5089
  ```|
5013
5090
  >|
5014
5091
  */
5015
- public func getPushCertificate(development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
5092
+ public func getPushCertificate(platform: String = "ios",
5093
+ development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
5016
5094
  websitePush: OptionalConfigValue<Bool> = .fastlaneDefault(false),
5017
5095
  generateP12: OptionalConfigValue<Bool> = .fastlaneDefault(true),
5018
5096
  activeDaysLimit: Int = 30,
@@ -5022,11 +5100,12 @@ public func getPushCertificate(development: OptionalConfigValue<Bool> = .fastlan
5022
5100
  username: String,
5023
5101
  teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5024
5102
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5025
- p12Password: String,
5103
+ p12Password: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5026
5104
  pemName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5027
5105
  outputPath: String = ".",
5028
5106
  newProfile: ((String) -> Void)? = nil)
5029
5107
  {
5108
+ let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
5030
5109
  let developmentArg = development.asRubyArgument(name: "development", type: nil)
5031
5110
  let websitePushArg = websitePush.asRubyArgument(name: "website_push", type: nil)
5032
5111
  let generateP12Arg = generateP12.asRubyArgument(name: "generate_p12", type: nil)
@@ -5037,11 +5116,12 @@ public func getPushCertificate(development: OptionalConfigValue<Bool> = .fastlan
5037
5116
  let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
5038
5117
  let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
5039
5118
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
5040
- let p12PasswordArg = RubyCommand.Argument(name: "p12_password", value: p12Password, type: nil)
5119
+ let p12PasswordArg = p12Password.asRubyArgument(name: "p12_password", type: nil)
5041
5120
  let pemNameArg = pemName.asRubyArgument(name: "pem_name", type: nil)
5042
5121
  let outputPathArg = RubyCommand.Argument(name: "output_path", value: outputPath, type: nil)
5043
5122
  let newProfileArg = RubyCommand.Argument(name: "new_profile", value: newProfile, type: .stringClosure)
5044
- let array: [RubyCommand.Argument?] = [developmentArg,
5123
+ let array: [RubyCommand.Argument?] = [platformArg,
5124
+ developmentArg,
5045
5125
  websitePushArg,
5046
5126
  generateP12Arg,
5047
5127
  activeDaysLimitArg,
@@ -5066,11 +5146,11 @@ public func getPushCertificate(development: OptionalConfigValue<Bool> = .fastlan
5066
5146
  Get the version number of your project
5067
5147
 
5068
5148
  - 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
5149
+ - 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
5150
  - target: Target name, optional. Will be needed if you have more than one non-test target to avoid being prompted to select one
5071
5151
  - 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
5152
 
5073
- This action will return the current version number set on your project.
5153
+ 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
5154
  */
5075
5155
  @discardableResult public func getVersionNumber(xcodeproj: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5076
5156
  target: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -5504,15 +5584,18 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5504
5584
  - 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
5585
  - xcconfig: Use an extra XCCONFIG file to build your app
5506
5586
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
5507
- - disableXcpretty: Disable xcpretty formatting of build output
5587
+ - 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/)
5588
+ - buildTimingSummary: Create a build timing summary
5589
+ - disableXcpretty: **DEPRECATED!** Use `xcodebuild_formatter: ''` instead - Disable xcpretty formatting of build output
5508
5590
  - xcprettyTestFormat: Use the test (RSpec style) format for build output
5509
5591
  - xcprettyFormatter: A custom xcpretty formatter to use
5510
5592
  - xcprettyReportJunit: Have xcpretty create a JUnit-style XML report at the provided path
5511
5593
  - xcprettyReportHtml: Have xcpretty create a simple HTML report at the provided path
5512
5594
  - 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
5595
  - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
5596
+ - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
5515
5597
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
5598
+ - xcodebuildCommand: Allows for override of the default `xcodebuild` command
5516
5599
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
5517
5600
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
5518
5601
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
@@ -5556,15 +5639,18 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5556
5639
  xcargs: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.xcargs),
5557
5640
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.xcconfig),
5558
5641
  suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.suppressXcodeOutput),
5642
+ xcodebuildFormatter: String = gymfile.xcodebuildFormatter,
5643
+ buildTimingSummary: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.buildTimingSummary),
5559
5644
  disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.disableXcpretty),
5560
5645
  xcprettyTestFormat: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.xcprettyTestFormat),
5561
5646
  xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.xcprettyFormatter),
5562
5647
  xcprettyReportJunit: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.xcprettyReportJunit),
5563
5648
  xcprettyReportHtml: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.xcprettyReportHtml),
5564
5649
  xcprettyReportJson: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.xcprettyReportJson),
5565
- analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.analyzeBuildTime),
5566
5650
  xcprettyUtf: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.xcprettyUtf),
5651
+ analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.analyzeBuildTime),
5567
5652
  skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.skipProfileDetection),
5653
+ xcodebuildCommand: String = gymfile.xcodebuildCommand,
5568
5654
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.clonedSourcePackagesPath),
5569
5655
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.skipPackageDependenciesResolution),
5570
5656
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.disablePackageAutomaticUpdates),
@@ -5604,15 +5690,18 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5604
5690
  let xcargsArg = xcargs.asRubyArgument(name: "xcargs", type: nil)
5605
5691
  let xcconfigArg = xcconfig.asRubyArgument(name: "xcconfig", type: nil)
5606
5692
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
5693
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
5694
+ let buildTimingSummaryArg = buildTimingSummary.asRubyArgument(name: "build_timing_summary", type: nil)
5607
5695
  let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
5608
5696
  let xcprettyTestFormatArg = xcprettyTestFormat.asRubyArgument(name: "xcpretty_test_format", type: nil)
5609
5697
  let xcprettyFormatterArg = xcprettyFormatter.asRubyArgument(name: "xcpretty_formatter", type: nil)
5610
5698
  let xcprettyReportJunitArg = xcprettyReportJunit.asRubyArgument(name: "xcpretty_report_junit", type: nil)
5611
5699
  let xcprettyReportHtmlArg = xcprettyReportHtml.asRubyArgument(name: "xcpretty_report_html", type: nil)
5612
5700
  let xcprettyReportJsonArg = xcprettyReportJson.asRubyArgument(name: "xcpretty_report_json", type: nil)
5613
- let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
5614
5701
  let xcprettyUtfArg = xcprettyUtf.asRubyArgument(name: "xcpretty_utf", type: nil)
5702
+ let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
5615
5703
  let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
5704
+ let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
5616
5705
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
5617
5706
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
5618
5707
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
@@ -5651,15 +5740,18 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5651
5740
  xcargsArg,
5652
5741
  xcconfigArg,
5653
5742
  suppressXcodeOutputArg,
5743
+ xcodebuildFormatterArg,
5744
+ buildTimingSummaryArg,
5654
5745
  disableXcprettyArg,
5655
5746
  xcprettyTestFormatArg,
5656
5747
  xcprettyFormatterArg,
5657
5748
  xcprettyReportJunitArg,
5658
5749
  xcprettyReportHtmlArg,
5659
5750
  xcprettyReportJsonArg,
5660
- analyzeBuildTimeArg,
5661
5751
  xcprettyUtfArg,
5752
+ analyzeBuildTimeArg,
5662
5753
  skipProfileDetectionArg,
5754
+ xcodebuildCommandArg,
5663
5755
  clonedSourcePackagesPathArg,
5664
5756
  skipPackageDependenciesResolutionArg,
5665
5757
  disablePackageAutomaticUpdatesArg,
@@ -6557,7 +6649,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
6557
6649
  Alias for the `sync_code_signing` action
6558
6650
 
6559
6651
  - parameters:
6560
- - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
6652
+ - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution, developer_id_installer
6561
6653
  - additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
6562
6654
  - readonly: Only fetch existing certificates and profiles, don't generate new ones
6563
6655
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
@@ -6581,18 +6673,23 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
6581
6673
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
6582
6674
  - googleCloudKeysFile: Path to the gc_keys.json file
6583
6675
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
6676
+ - skipGoogleCloudAccountConfirmation: Skips confirming to use the system google account
6584
6677
  - s3Region: Name of the S3 region
6585
6678
  - s3AccessKey: S3 access key
6586
6679
  - s3SecretAccessKey: S3 secret access key
6587
6680
  - s3Bucket: Name of the S3 bucket
6588
6681
  - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
6682
+ - gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
6683
+ - gitlabHost: GitLab Host (i.e. 'https://gitlab.com')
6589
6684
  - keychainName: Keychain the items should be imported to
6590
6685
  - 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
6686
  - force: Renew the provisioning profiles every time you run match
6592
6687
  - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile types 'appstore' and 'developer_id'
6688
+ - includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
6593
6689
  - 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'
6690
+ - 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
6691
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
6692
+ - safeRemoveCerts: Remove certs from repository during nuke without revoking them on the developer portal
6596
6693
  - skipDocs: Skip generation of a README.md for the created git repository
6597
6694
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
6598
6695
  - 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 +6727,23 @@ public func match(type: String = matchfile.type,
6630
6727
  googleCloudBucketName: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.googleCloudBucketName),
6631
6728
  googleCloudKeysFile: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.googleCloudKeysFile),
6632
6729
  googleCloudProjectId: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.googleCloudProjectId),
6730
+ skipGoogleCloudAccountConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.skipGoogleCloudAccountConfirmation),
6633
6731
  s3Region: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3Region),
6634
6732
  s3AccessKey: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3AccessKey),
6635
6733
  s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3SecretAccessKey),
6636
6734
  s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3Bucket),
6637
6735
  s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3ObjectPrefix),
6736
+ gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.gitlabProject),
6737
+ gitlabHost: String = matchfile.gitlabHost,
6638
6738
  keychainName: String = matchfile.keychainName,
6639
6739
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.keychainPassword),
6640
6740
  force: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.force),
6641
6741
  forceForNewDevices: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.forceForNewDevices),
6742
+ includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.includeMacInProfiles),
6642
6743
  includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.includeAllCertificates),
6643
6744
  forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.forceForNewCertificates),
6644
6745
  skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.skipConfirmation),
6746
+ safeRemoveCerts: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.safeRemoveCerts),
6645
6747
  skipDocs: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.skipDocs),
6646
6748
  platform: String = matchfile.platform,
6647
6749
  deriveCatalystAppIdentifier: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.deriveCatalystAppIdentifier),
@@ -6677,18 +6779,23 @@ public func match(type: String = matchfile.type,
6677
6779
  let googleCloudBucketNameArg = googleCloudBucketName.asRubyArgument(name: "google_cloud_bucket_name", type: nil)
6678
6780
  let googleCloudKeysFileArg = googleCloudKeysFile.asRubyArgument(name: "google_cloud_keys_file", type: nil)
6679
6781
  let googleCloudProjectIdArg = googleCloudProjectId.asRubyArgument(name: "google_cloud_project_id", type: nil)
6782
+ let skipGoogleCloudAccountConfirmationArg = skipGoogleCloudAccountConfirmation.asRubyArgument(name: "skip_google_cloud_account_confirmation", type: nil)
6680
6783
  let s3RegionArg = s3Region.asRubyArgument(name: "s3_region", type: nil)
6681
6784
  let s3AccessKeyArg = s3AccessKey.asRubyArgument(name: "s3_access_key", type: nil)
6682
6785
  let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
6683
6786
  let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
6684
6787
  let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
6788
+ let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
6789
+ let gitlabHostArg = RubyCommand.Argument(name: "gitlab_host", value: gitlabHost, type: nil)
6685
6790
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
6686
6791
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
6687
6792
  let forceArg = force.asRubyArgument(name: "force", type: nil)
6688
6793
  let forceForNewDevicesArg = forceForNewDevices.asRubyArgument(name: "force_for_new_devices", type: nil)
6794
+ let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
6689
6795
  let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
6690
6796
  let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
6691
6797
  let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
6798
+ let safeRemoveCertsArg = safeRemoveCerts.asRubyArgument(name: "safe_remove_certs", type: nil)
6692
6799
  let skipDocsArg = skipDocs.asRubyArgument(name: "skip_docs", type: nil)
6693
6800
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
6694
6801
  let deriveCatalystAppIdentifierArg = deriveCatalystAppIdentifier.asRubyArgument(name: "derive_catalyst_app_identifier", type: nil)
@@ -6723,18 +6830,23 @@ public func match(type: String = matchfile.type,
6723
6830
  googleCloudBucketNameArg,
6724
6831
  googleCloudKeysFileArg,
6725
6832
  googleCloudProjectIdArg,
6833
+ skipGoogleCloudAccountConfirmationArg,
6726
6834
  s3RegionArg,
6727
6835
  s3AccessKeyArg,
6728
6836
  s3SecretAccessKeyArg,
6729
6837
  s3BucketArg,
6730
6838
  s3ObjectPrefixArg,
6839
+ gitlabProjectArg,
6840
+ gitlabHostArg,
6731
6841
  keychainNameArg,
6732
6842
  keychainPasswordArg,
6733
6843
  forceArg,
6734
6844
  forceForNewDevicesArg,
6845
+ includeMacInProfilesArg,
6735
6846
  includeAllCertificatesArg,
6736
6847
  forceForNewCertificatesArg,
6737
6848
  skipConfirmationArg,
6849
+ safeRemoveCertsArg,
6738
6850
  skipDocsArg,
6739
6851
  platformArg,
6740
6852
  deriveCatalystAppIdentifierArg,
@@ -6756,7 +6868,7 @@ public func match(type: String = matchfile.type,
6756
6868
  Easily nuke your certificate and provisioning profiles (via _match_)
6757
6869
 
6758
6870
  - parameters:
6759
- - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
6871
+ - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution, developer_id_installer
6760
6872
  - additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
6761
6873
  - readonly: Only fetch existing certificates and profiles, don't generate new ones
6762
6874
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
@@ -6780,18 +6892,23 @@ public func match(type: String = matchfile.type,
6780
6892
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
6781
6893
  - googleCloudKeysFile: Path to the gc_keys.json file
6782
6894
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
6895
+ - skipGoogleCloudAccountConfirmation: Skips confirming to use the system google account
6783
6896
  - s3Region: Name of the S3 region
6784
6897
  - s3AccessKey: S3 access key
6785
6898
  - s3SecretAccessKey: S3 secret access key
6786
6899
  - s3Bucket: Name of the S3 bucket
6787
6900
  - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
6901
+ - gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
6902
+ - gitlabHost: GitLab Host (i.e. 'https://gitlab.com')
6788
6903
  - keychainName: Keychain the items should be imported to
6789
6904
  - 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
6905
  - force: Renew the provisioning profiles every time you run match
6791
6906
  - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile types 'appstore' and 'developer_id'
6907
+ - includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
6792
6908
  - 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'
6909
+ - 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
6910
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
6911
+ - safeRemoveCerts: Remove certs from repository during nuke without revoking them on the developer portal
6795
6912
  - skipDocs: Skip generation of a README.md for the created git repository
6796
6913
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
6797
6914
  - 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 +6950,23 @@ public func matchNuke(type: String = "development",
6833
6950
  googleCloudBucketName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6834
6951
  googleCloudKeysFile: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6835
6952
  googleCloudProjectId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6953
+ skipGoogleCloudAccountConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6836
6954
  s3Region: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6837
6955
  s3AccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6838
6956
  s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6839
6957
  s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6840
6958
  s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6959
+ gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6960
+ gitlabHost: String = "https://gitlab.com",
6841
6961
  keychainName: String = "login.keychain",
6842
6962
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6843
6963
  force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6844
6964
  forceForNewDevices: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6965
+ includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6845
6966
  includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6846
6967
  forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6847
6968
  skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6969
+ safeRemoveCerts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6848
6970
  skipDocs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6849
6971
  platform: String = "ios",
6850
6972
  deriveCatalystAppIdentifier: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -6880,18 +7002,23 @@ public func matchNuke(type: String = "development",
6880
7002
  let googleCloudBucketNameArg = googleCloudBucketName.asRubyArgument(name: "google_cloud_bucket_name", type: nil)
6881
7003
  let googleCloudKeysFileArg = googleCloudKeysFile.asRubyArgument(name: "google_cloud_keys_file", type: nil)
6882
7004
  let googleCloudProjectIdArg = googleCloudProjectId.asRubyArgument(name: "google_cloud_project_id", type: nil)
7005
+ let skipGoogleCloudAccountConfirmationArg = skipGoogleCloudAccountConfirmation.asRubyArgument(name: "skip_google_cloud_account_confirmation", type: nil)
6883
7006
  let s3RegionArg = s3Region.asRubyArgument(name: "s3_region", type: nil)
6884
7007
  let s3AccessKeyArg = s3AccessKey.asRubyArgument(name: "s3_access_key", type: nil)
6885
7008
  let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
6886
7009
  let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
6887
7010
  let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
7011
+ let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
7012
+ let gitlabHostArg = RubyCommand.Argument(name: "gitlab_host", value: gitlabHost, type: nil)
6888
7013
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
6889
7014
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
6890
7015
  let forceArg = force.asRubyArgument(name: "force", type: nil)
6891
7016
  let forceForNewDevicesArg = forceForNewDevices.asRubyArgument(name: "force_for_new_devices", type: nil)
7017
+ let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
6892
7018
  let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
6893
7019
  let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
6894
7020
  let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
7021
+ let safeRemoveCertsArg = safeRemoveCerts.asRubyArgument(name: "safe_remove_certs", type: nil)
6895
7022
  let skipDocsArg = skipDocs.asRubyArgument(name: "skip_docs", type: nil)
6896
7023
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
6897
7024
  let deriveCatalystAppIdentifierArg = deriveCatalystAppIdentifier.asRubyArgument(name: "derive_catalyst_app_identifier", type: nil)
@@ -6926,18 +7053,23 @@ public func matchNuke(type: String = "development",
6926
7053
  googleCloudBucketNameArg,
6927
7054
  googleCloudKeysFileArg,
6928
7055
  googleCloudProjectIdArg,
7056
+ skipGoogleCloudAccountConfirmationArg,
6929
7057
  s3RegionArg,
6930
7058
  s3AccessKeyArg,
6931
7059
  s3SecretAccessKeyArg,
6932
7060
  s3BucketArg,
6933
7061
  s3ObjectPrefixArg,
7062
+ gitlabProjectArg,
7063
+ gitlabHostArg,
6934
7064
  keychainNameArg,
6935
7065
  keychainPasswordArg,
6936
7066
  forceArg,
6937
7067
  forceForNewDevicesArg,
7068
+ includeMacInProfilesArg,
6938
7069
  includeAllCertificatesArg,
6939
7070
  forceForNewCertificatesArg,
6940
7071
  skipConfirmationArg,
7072
+ safeRemoveCertsArg,
6941
7073
  skipDocsArg,
6942
7074
  platformArg,
6943
7075
  deriveCatalystAppIdentifierArg,
@@ -7090,6 +7222,7 @@ public func nexusUpload(file: String,
7090
7222
  - package: Path to package to notarize, e.g. .app bundle or disk image
7091
7223
  - useNotarytool: Whether to `xcrun notarytool` or `xcrun altool`
7092
7224
  - tryEarlyStapling: Whether to try early stapling while the notarization request is in progress
7225
+ - skipStapling: Do not staple the notarization ticket to the artifact; useful for single file executables and ZIP archives
7093
7226
  - bundleId: Bundle identifier to uniquely identify the package
7094
7227
  - username: Apple ID username
7095
7228
  - ascProvider: Provider short name for accounts associated with multiple providers
@@ -7101,6 +7234,7 @@ public func nexusUpload(file: String,
7101
7234
  public func notarize(package: String,
7102
7235
  useNotarytool: OptionalConfigValue<Bool> = .fastlaneDefault(true),
7103
7236
  tryEarlyStapling: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7237
+ skipStapling: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7104
7238
  bundleId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7105
7239
  username: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7106
7240
  ascProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -7112,6 +7246,7 @@ public func notarize(package: String,
7112
7246
  let packageArg = RubyCommand.Argument(name: "package", value: package, type: nil)
7113
7247
  let useNotarytoolArg = useNotarytool.asRubyArgument(name: "use_notarytool", type: nil)
7114
7248
  let tryEarlyStaplingArg = tryEarlyStapling.asRubyArgument(name: "try_early_stapling", type: nil)
7249
+ let skipStaplingArg = skipStapling.asRubyArgument(name: "skip_stapling", type: nil)
7115
7250
  let bundleIdArg = bundleId.asRubyArgument(name: "bundle_id", type: nil)
7116
7251
  let usernameArg = username.asRubyArgument(name: "username", type: nil)
7117
7252
  let ascProviderArg = ascProvider.asRubyArgument(name: "asc_provider", type: nil)
@@ -7122,6 +7257,7 @@ public func notarize(package: String,
7122
7257
  let array: [RubyCommand.Argument?] = [packageArg,
7123
7258
  useNotarytoolArg,
7124
7259
  tryEarlyStaplingArg,
7260
+ skipStaplingArg,
7125
7261
  bundleIdArg,
7126
7262
  usernameArg,
7127
7263
  ascProviderArg,
@@ -7383,6 +7519,7 @@ public func optOutUsage() {
7383
7519
  Alias for the `get_push_certificate` action
7384
7520
 
7385
7521
  - parameters:
7522
+ - platform: Set certificate's platform. Used for creation of production & development certificates. Supported platforms: ios, macos
7386
7523
  - development: Renew the development push certificate instead of the production one
7387
7524
  - websitePush: Create a Website Push certificate
7388
7525
  - generateP12: Generate a p12 file additionally to a PEM file
@@ -7410,7 +7547,8 @@ public func optOutUsage() {
7410
7547
  ```|
7411
7548
  >|
7412
7549
  */
7413
- public func pem(development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7550
+ public func pem(platform: String = "ios",
7551
+ development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7414
7552
  websitePush: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7415
7553
  generateP12: OptionalConfigValue<Bool> = .fastlaneDefault(true),
7416
7554
  activeDaysLimit: Int = 30,
@@ -7420,11 +7558,12 @@ public func pem(development: OptionalConfigValue<Bool> = .fastlaneDefault(false)
7420
7558
  username: String,
7421
7559
  teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7422
7560
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7423
- p12Password: String,
7561
+ p12Password: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7424
7562
  pemName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7425
7563
  outputPath: String = ".",
7426
7564
  newProfile: ((String) -> Void)? = nil)
7427
7565
  {
7566
+ let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
7428
7567
  let developmentArg = development.asRubyArgument(name: "development", type: nil)
7429
7568
  let websitePushArg = websitePush.asRubyArgument(name: "website_push", type: nil)
7430
7569
  let generateP12Arg = generateP12.asRubyArgument(name: "generate_p12", type: nil)
@@ -7435,11 +7574,12 @@ public func pem(development: OptionalConfigValue<Bool> = .fastlaneDefault(false)
7435
7574
  let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
7436
7575
  let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
7437
7576
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
7438
- let p12PasswordArg = RubyCommand.Argument(name: "p12_password", value: p12Password, type: nil)
7577
+ let p12PasswordArg = p12Password.asRubyArgument(name: "p12_password", type: nil)
7439
7578
  let pemNameArg = pemName.asRubyArgument(name: "pem_name", type: nil)
7440
7579
  let outputPathArg = RubyCommand.Argument(name: "output_path", value: outputPath, type: nil)
7441
7580
  let newProfileArg = RubyCommand.Argument(name: "new_profile", value: newProfile, type: .stringClosure)
7442
- let array: [RubyCommand.Argument?] = [developmentArg,
7581
+ let array: [RubyCommand.Argument?] = [platformArg,
7582
+ developmentArg,
7443
7583
  websitePushArg,
7444
7584
  generateP12Arg,
7445
7585
  activeDaysLimitArg,
@@ -7502,6 +7642,7 @@ public func pem(development: OptionalConfigValue<Bool> = .fastlaneDefault(false)
7502
7642
  - 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
7643
  - 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
7644
  - rejectBuildWaitingForReview: Expire previous if it's 'waiting for review'
7645
+ - submitBetaReview: Send the build for a beta review
7505
7646
 
7506
7647
  More details can be found on https://docs.fastlane.tools/actions/pilot/.
7507
7648
  This integration will only do the TestFlight upload.
@@ -7543,7 +7684,8 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7543
7684
  waitProcessingInterval: Int = 30,
7544
7685
  waitProcessingTimeoutDuration: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
7545
7686
  waitForUploadedBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7546
- rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false))
7687
+ rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7688
+ submitBetaReview: OptionalConfigValue<Bool> = .fastlaneDefault(true))
7547
7689
  {
7548
7690
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
7549
7691
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -7583,6 +7725,7 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7583
7725
  let waitProcessingTimeoutDurationArg = waitProcessingTimeoutDuration.asRubyArgument(name: "wait_processing_timeout_duration", type: nil)
7584
7726
  let waitForUploadedBuildArg = waitForUploadedBuild.asRubyArgument(name: "wait_for_uploaded_build", type: nil)
7585
7727
  let rejectBuildWaitingForReviewArg = rejectBuildWaitingForReview.asRubyArgument(name: "reject_build_waiting_for_review", type: nil)
7728
+ let submitBetaReviewArg = submitBetaReview.asRubyArgument(name: "submit_beta_review", type: nil)
7586
7729
  let array: [RubyCommand.Argument?] = [apiKeyPathArg,
7587
7730
  apiKeyArg,
7588
7731
  usernameArg,
@@ -7620,7 +7763,8 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7620
7763
  waitProcessingIntervalArg,
7621
7764
  waitProcessingTimeoutDurationArg,
7622
7765
  waitForUploadedBuildArg,
7623
- rejectBuildWaitingForReviewArg]
7766
+ rejectBuildWaitingForReviewArg,
7767
+ submitBetaReviewArg]
7624
7768
  let args: [RubyCommand.Argument] = array
7625
7769
  .filter { $0?.value != nil }
7626
7770
  .compactMap { $0 }
@@ -7765,6 +7909,8 @@ public func podLibLint(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefau
7765
7909
  - verbose: Show more debugging information
7766
7910
  - useModularHeaders: Use modular headers option during validation
7767
7911
  - synchronous: If validation depends on other recently pushed pods, synchronize
7912
+ - noOverwrite: Disallow pushing that would overwrite an existing spec
7913
+ - localOnly: Does not perform the step of pushing REPO to its remote
7768
7914
  */
7769
7915
  public func podPush(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7770
7916
  path: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -7778,7 +7924,9 @@ public func podPush(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefault(
7778
7924
  useJson: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
7779
7925
  verbose: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7780
7926
  useModularHeaders: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
7781
- synchronous: OptionalConfigValue<Bool?> = .fastlaneDefault(nil))
7927
+ synchronous: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
7928
+ noOverwrite: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
7929
+ localOnly: OptionalConfigValue<Bool?> = .fastlaneDefault(nil))
7782
7930
  {
7783
7931
  let useBundleExecArg = useBundleExec.asRubyArgument(name: "use_bundle_exec", type: nil)
7784
7932
  let pathArg = path.asRubyArgument(name: "path", type: nil)
@@ -7793,6 +7941,8 @@ public func podPush(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefault(
7793
7941
  let verboseArg = verbose.asRubyArgument(name: "verbose", type: nil)
7794
7942
  let useModularHeadersArg = useModularHeaders.asRubyArgument(name: "use_modular_headers", type: nil)
7795
7943
  let synchronousArg = synchronous.asRubyArgument(name: "synchronous", type: nil)
7944
+ let noOverwriteArg = noOverwrite.asRubyArgument(name: "no_overwrite", type: nil)
7945
+ let localOnlyArg = localOnly.asRubyArgument(name: "local_only", type: nil)
7796
7946
  let array: [RubyCommand.Argument?] = [useBundleExecArg,
7797
7947
  pathArg,
7798
7948
  repoArg,
@@ -7805,7 +7955,9 @@ public func podPush(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefault(
7805
7955
  useJsonArg,
7806
7956
  verboseArg,
7807
7957
  useModularHeadersArg,
7808
- synchronousArg]
7958
+ synchronousArg,
7959
+ noOverwriteArg,
7960
+ localOnlyArg]
7809
7961
  let args: [RubyCommand.Argument] = array
7810
7962
  .filter { $0?.value != nil }
7811
7963
  .compactMap { $0 }
@@ -8168,7 +8320,7 @@ public func puts(message: OptionalConfigValue<String?> = .fastlaneDefault(nil))
8168
8320
  This can be useful when basing your release process on the version string only stored in one place - in the podspec.
8169
8321
  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
8322
  */
8171
- @discardableResult public func readPodspec(path: String) -> [String: String] {
8323
+ @discardableResult public func readPodspec(path: String) -> [String: Any] {
8172
8324
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
8173
8325
  let array: [RubyCommand.Argument?] = [pathArg]
8174
8326
  let args: [RubyCommand.Argument] = array
@@ -8500,8 +8652,8 @@ public func rubyVersion() {
8500
8652
  - project: Path to the project file
8501
8653
  - packagePath: Path to the Swift Package
8502
8654
  - 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'])
8655
+ - device: The name of the simulator type you want to run tests on (e.g. 'iPhone 6' or 'iPhone SE (2nd generation) (14.5)')
8656
+ - devices: Array of devices to run the tests on (e.g. ['iPhone 6', 'iPad Air', 'iPhone SE (2nd generation) (14.5)'])
8505
8657
  - skipDetectDevices: Should skip auto detecting of devices if none were specified
8506
8658
  - ensureDevicesFound: Should fail if devices not found
8507
8659
  - forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
@@ -8522,7 +8674,6 @@ public func rubyVersion() {
8522
8674
  - addressSanitizer: Should the address sanitizer be turned on?
8523
8675
  - threadSanitizer: Should the thread sanitizer be turned on?
8524
8676
  - 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
8677
  - outputDirectory: The directory in which all reports will be stored
8527
8678
  - outputStyle: Define how the output should look like. Valid values are: standard, basic, rspec, or raw (disables xcpretty during xcodebuild)
8528
8679
  - outputTypes: Comma separated list of the output types (e.g. html, junit, json-compilation-database)
@@ -8530,13 +8681,19 @@ public func rubyVersion() {
8530
8681
  - buildlogPath: The directory where to store the raw log
8531
8682
  - 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
8683
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
8533
- - formatter: A custom xcpretty formatter to use
8684
+ - 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/)
8685
+ - outputRemoveRetryAttempts: Remove retry attempts from test results table and the JUnit report (if not using xcpretty)
8686
+ - 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
8687
+ - formatter: **DEPRECATED!** Use 'xcpretty_formatter' instead - A custom xcpretty formatter to use
8688
+ - xcprettyFormatter: A custom xcpretty formatter to use
8534
8689
  - xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')
8535
8690
  - derivedDataPath: The directory where build products and other derived data will go
8536
8691
  - shouldZipBuildProducts: Should zip the derived data build products and place in output path?
8537
8692
  - outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
8693
+ - resultBundlePath: Custom path for the result bundle, overrides result_bundle
8538
8694
  - resultBundle: Should an Xcode result bundle be generated in the output directory
8539
8695
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
8696
+ - parallelTesting: Optionally override the per-target setting in the scheme for running tests in parallel. Equivalent to -parallel-testing-enabled
8540
8697
  - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
8541
8698
  - maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
8542
8699
  - disableConcurrentTesting: Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing
@@ -8559,6 +8716,7 @@ public func rubyVersion() {
8559
8716
  - slackOnlyOnFailure: Only post on Slack if the tests fail
8560
8717
  - slackDefaultPayloads: Specifies default payloads to include in Slack messages. For more info visit https://docs.fastlane.tools/actions/slack
8561
8718
  - destination: Use only if you're a pro, use the other options instead
8719
+ - runRosettaSimulator: Adds arch=x86_64 to the xcodebuild 'destination' argument to run simulator in a Rosetta mode
8562
8720
  - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
8563
8721
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
8564
8722
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
@@ -8566,83 +8724,91 @@ public func rubyVersion() {
8566
8724
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
8567
8725
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
8568
8726
  - useSystemScm: Lets xcodebuild use system's scm configuration
8569
- - numberOfRetries: The number of times a test can fail before scan should stop retrying
8727
+ - numberOfRetries: The number of times a test can fail
8570
8728
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
8571
8729
 
8730
+ - 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
8731
+
8572
8732
  More information: https://docs.fastlane.tools/actions/scan/
8573
8733
  */
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))
8734
+ @discardableResult public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8735
+ project: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8736
+ packagePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8737
+ scheme: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8738
+ device: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8739
+ devices: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8740
+ skipDetectDevices: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8741
+ ensureDevicesFound: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8742
+ forceQuitSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8743
+ resetSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8744
+ disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(true),
8745
+ prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8746
+ reinstallApp: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8747
+ appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8748
+ onlyTesting: Any? = nil,
8749
+ skipTesting: Any? = nil,
8750
+ testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8751
+ onlyTestConfigurations: Any? = nil,
8752
+ skipTestConfigurations: Any? = nil,
8753
+ xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8754
+ toolchain: Any? = nil,
8755
+ clean: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8756
+ codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8757
+ addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8758
+ threadSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8759
+ openReport: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8760
+ outputDirectory: String = "./test_output",
8761
+ outputStyle: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8762
+ outputTypes: String = "html,junit",
8763
+ outputFiles: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8764
+ buildlogPath: String = "~/Library/Logs/scan",
8765
+ includeSimulatorLogs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8766
+ suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8767
+ xcodebuildFormatter: String = "xcbeautify",
8768
+ outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8769
+ disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8770
+ formatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8771
+ xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8772
+ xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8773
+ derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8774
+ shouldZipBuildProducts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8775
+ outputXctestrun: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8776
+ resultBundlePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8777
+ resultBundle: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8778
+ useClangReportName: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8779
+ parallelTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8780
+ concurrentWorkers: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
8781
+ maxConcurrentSimulators: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
8782
+ disableConcurrentTesting: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8783
+ skipBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8784
+ testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8785
+ buildForTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8786
+ sdk: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8787
+ configuration: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8788
+ xcargs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8789
+ xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8790
+ appName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8791
+ deploymentTargetVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8792
+ slackUrl: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8793
+ slackChannel: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8794
+ slackMessage: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8795
+ slackUseWebhookConfiguredUsernameAndIcon: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8796
+ slackUsername: String = "fastlane",
8797
+ slackIconUrl: String = "https://fastlane.tools/assets/img/fastlane_icon.png",
8798
+ skipSlack: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8799
+ slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8800
+ slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8801
+ destination: Any? = nil,
8802
+ runRosettaSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8803
+ catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8804
+ customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8805
+ xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
8806
+ clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8807
+ skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8808
+ disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8809
+ useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8810
+ numberOfRetries: Int = 0,
8811
+ failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(true)) -> [String: Any]
8646
8812
  {
8647
8813
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
8648
8814
  let projectArg = project.asRubyArgument(name: "project", type: nil)
@@ -8670,7 +8836,6 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8670
8836
  let addressSanitizerArg = addressSanitizer.asRubyArgument(name: "address_sanitizer", type: nil)
8671
8837
  let threadSanitizerArg = threadSanitizer.asRubyArgument(name: "thread_sanitizer", type: nil)
8672
8838
  let openReportArg = openReport.asRubyArgument(name: "open_report", type: nil)
8673
- let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
8674
8839
  let outputDirectoryArg = RubyCommand.Argument(name: "output_directory", value: outputDirectory, type: nil)
8675
8840
  let outputStyleArg = outputStyle.asRubyArgument(name: "output_style", type: nil)
8676
8841
  let outputTypesArg = RubyCommand.Argument(name: "output_types", value: outputTypes, type: nil)
@@ -8678,13 +8843,19 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8678
8843
  let buildlogPathArg = RubyCommand.Argument(name: "buildlog_path", value: buildlogPath, type: nil)
8679
8844
  let includeSimulatorLogsArg = includeSimulatorLogs.asRubyArgument(name: "include_simulator_logs", type: nil)
8680
8845
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
8846
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
8847
+ let outputRemoveRetryAttemptsArg = outputRemoveRetryAttempts.asRubyArgument(name: "output_remove_retry_attempts", type: nil)
8848
+ let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
8681
8849
  let formatterArg = formatter.asRubyArgument(name: "formatter", type: nil)
8850
+ let xcprettyFormatterArg = xcprettyFormatter.asRubyArgument(name: "xcpretty_formatter", type: nil)
8682
8851
  let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
8683
8852
  let derivedDataPathArg = derivedDataPath.asRubyArgument(name: "derived_data_path", type: nil)
8684
8853
  let shouldZipBuildProductsArg = shouldZipBuildProducts.asRubyArgument(name: "should_zip_build_products", type: nil)
8685
8854
  let outputXctestrunArg = outputXctestrun.asRubyArgument(name: "output_xctestrun", type: nil)
8855
+ let resultBundlePathArg = resultBundlePath.asRubyArgument(name: "result_bundle_path", type: nil)
8686
8856
  let resultBundleArg = resultBundle.asRubyArgument(name: "result_bundle", type: nil)
8687
8857
  let useClangReportNameArg = useClangReportName.asRubyArgument(name: "use_clang_report_name", type: nil)
8858
+ let parallelTestingArg = parallelTesting.asRubyArgument(name: "parallel_testing", type: nil)
8688
8859
  let concurrentWorkersArg = concurrentWorkers.asRubyArgument(name: "concurrent_workers", type: nil)
8689
8860
  let maxConcurrentSimulatorsArg = maxConcurrentSimulators.asRubyArgument(name: "max_concurrent_simulators", type: nil)
8690
8861
  let disableConcurrentTestingArg = disableConcurrentTesting.asRubyArgument(name: "disable_concurrent_testing", type: nil)
@@ -8707,6 +8878,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8707
8878
  let slackOnlyOnFailureArg = slackOnlyOnFailure.asRubyArgument(name: "slack_only_on_failure", type: nil)
8708
8879
  let slackDefaultPayloadsArg = slackDefaultPayloads.asRubyArgument(name: "slack_default_payloads", type: nil)
8709
8880
  let destinationArg = RubyCommand.Argument(name: "destination", value: destination, type: nil)
8881
+ let runRosettaSimulatorArg = runRosettaSimulator.asRubyArgument(name: "run_rosetta_simulator", type: nil)
8710
8882
  let catalystPlatformArg = catalystPlatform.asRubyArgument(name: "catalyst_platform", type: nil)
8711
8883
  let customReportFileNameArg = customReportFileName.asRubyArgument(name: "custom_report_file_name", type: nil)
8712
8884
  let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
@@ -8742,7 +8914,6 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8742
8914
  addressSanitizerArg,
8743
8915
  threadSanitizerArg,
8744
8916
  openReportArg,
8745
- disableXcprettyArg,
8746
8917
  outputDirectoryArg,
8747
8918
  outputStyleArg,
8748
8919
  outputTypesArg,
@@ -8750,13 +8921,19 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8750
8921
  buildlogPathArg,
8751
8922
  includeSimulatorLogsArg,
8752
8923
  suppressXcodeOutputArg,
8924
+ xcodebuildFormatterArg,
8925
+ outputRemoveRetryAttemptsArg,
8926
+ disableXcprettyArg,
8753
8927
  formatterArg,
8928
+ xcprettyFormatterArg,
8754
8929
  xcprettyArgsArg,
8755
8930
  derivedDataPathArg,
8756
8931
  shouldZipBuildProductsArg,
8757
8932
  outputXctestrunArg,
8933
+ resultBundlePathArg,
8758
8934
  resultBundleArg,
8759
8935
  useClangReportNameArg,
8936
+ parallelTestingArg,
8760
8937
  concurrentWorkersArg,
8761
8938
  maxConcurrentSimulatorsArg,
8762
8939
  disableConcurrentTestingArg,
@@ -8779,6 +8956,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8779
8956
  slackOnlyOnFailureArg,
8780
8957
  slackDefaultPayloadsArg,
8781
8958
  destinationArg,
8959
+ runRosettaSimulatorArg,
8782
8960
  catalystPlatformArg,
8783
8961
  customReportFileNameArg,
8784
8962
  xcodebuildCommandArg,
@@ -8792,7 +8970,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8792
8970
  .filter { $0?.value != nil }
8793
8971
  .compactMap { $0 }
8794
8972
  let command = RubyCommand(commandID: "", methodName: "run_tests", className: nil, args: args)
8795
- _ = runner.executeCommand(command)
8973
+ return parseDictionary(fromString: runner.executeCommand(command))
8796
8974
  }
8797
8975
 
8798
8976
  /**
@@ -8905,8 +9083,8 @@ public func say(text: [String],
8905
9083
  - project: Path to the project file
8906
9084
  - packagePath: Path to the Swift Package
8907
9085
  - 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'])
9086
+ - device: The name of the simulator type you want to run tests on (e.g. 'iPhone 6' or 'iPhone SE (2nd generation) (14.5)')
9087
+ - devices: Array of devices to run the tests on (e.g. ['iPhone 6', 'iPad Air', 'iPhone SE (2nd generation) (14.5)'])
8910
9088
  - skipDetectDevices: Should skip auto detecting of devices if none were specified
8911
9089
  - ensureDevicesFound: Should fail if devices not found
8912
9090
  - forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
@@ -8927,7 +9105,6 @@ public func say(text: [String],
8927
9105
  - addressSanitizer: Should the address sanitizer be turned on?
8928
9106
  - threadSanitizer: Should the thread sanitizer be turned on?
8929
9107
  - 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
9108
  - outputDirectory: The directory in which all reports will be stored
8932
9109
  - outputStyle: Define how the output should look like. Valid values are: standard, basic, rspec, or raw (disables xcpretty during xcodebuild)
8933
9110
  - outputTypes: Comma separated list of the output types (e.g. html, junit, json-compilation-database)
@@ -8935,13 +9112,19 @@ public func say(text: [String],
8935
9112
  - buildlogPath: The directory where to store the raw log
8936
9113
  - 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
9114
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
8938
- - formatter: A custom xcpretty formatter to use
9115
+ - 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/)
9116
+ - outputRemoveRetryAttempts: Remove retry attempts from test results table and the JUnit report (if not using xcpretty)
9117
+ - 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
9118
+ - formatter: **DEPRECATED!** Use 'xcpretty_formatter' instead - A custom xcpretty formatter to use
9119
+ - xcprettyFormatter: A custom xcpretty formatter to use
8939
9120
  - xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')
8940
9121
  - derivedDataPath: The directory where build products and other derived data will go
8941
9122
  - shouldZipBuildProducts: Should zip the derived data build products and place in output path?
8942
9123
  - outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
9124
+ - resultBundlePath: Custom path for the result bundle, overrides result_bundle
8943
9125
  - resultBundle: Should an Xcode result bundle be generated in the output directory
8944
9126
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
9127
+ - parallelTesting: Optionally override the per-target setting in the scheme for running tests in parallel. Equivalent to -parallel-testing-enabled
8945
9128
  - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
8946
9129
  - maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
8947
9130
  - disableConcurrentTesting: Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing
@@ -8964,6 +9147,7 @@ public func say(text: [String],
8964
9147
  - slackOnlyOnFailure: Only post on Slack if the tests fail
8965
9148
  - slackDefaultPayloads: Specifies default payloads to include in Slack messages. For more info visit https://docs.fastlane.tools/actions/slack
8966
9149
  - destination: Use only if you're a pro, use the other options instead
9150
+ - runRosettaSimulator: Adds arch=x86_64 to the xcodebuild 'destination' argument to run simulator in a Rosetta mode
8967
9151
  - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
8968
9152
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
8969
9153
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
@@ -8971,83 +9155,91 @@ public func say(text: [String],
8971
9155
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
8972
9156
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
8973
9157
  - useSystemScm: Lets xcodebuild use system's scm configuration
8974
- - numberOfRetries: The number of times a test can fail before scan should stop retrying
9158
+ - numberOfRetries: The number of times a test can fail
8975
9159
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
8976
9160
 
9161
+ - 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
9162
+
8977
9163
  More information: https://docs.fastlane.tools/actions/scan/
8978
9164
  */
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))
9165
+ @discardableResult public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.workspace),
9166
+ project: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.project),
9167
+ packagePath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.packagePath),
9168
+ scheme: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.scheme),
9169
+ device: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.device),
9170
+ devices: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.devices),
9171
+ skipDetectDevices: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipDetectDevices),
9172
+ ensureDevicesFound: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.ensureDevicesFound),
9173
+ forceQuitSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.forceQuitSimulator),
9174
+ resetSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.resetSimulator),
9175
+ disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disableSlideToType),
9176
+ prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.prelaunchSimulator),
9177
+ reinstallApp: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.reinstallApp),
9178
+ appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appIdentifier),
9179
+ onlyTesting: Any? = scanfile.onlyTesting,
9180
+ skipTesting: Any? = scanfile.skipTesting,
9181
+ testplan: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.testplan),
9182
+ onlyTestConfigurations: Any? = scanfile.onlyTestConfigurations,
9183
+ skipTestConfigurations: Any? = scanfile.skipTestConfigurations,
9184
+ xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xctestrun),
9185
+ toolchain: Any? = scanfile.toolchain,
9186
+ clean: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.clean),
9187
+ codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.codeCoverage),
9188
+ addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.addressSanitizer),
9189
+ threadSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.threadSanitizer),
9190
+ openReport: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.openReport),
9191
+ outputDirectory: String = scanfile.outputDirectory,
9192
+ outputStyle: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.outputStyle),
9193
+ outputTypes: String = scanfile.outputTypes,
9194
+ outputFiles: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.outputFiles),
9195
+ buildlogPath: String = scanfile.buildlogPath,
9196
+ includeSimulatorLogs: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.includeSimulatorLogs),
9197
+ suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.suppressXcodeOutput),
9198
+ xcodebuildFormatter: String = scanfile.xcodebuildFormatter,
9199
+ outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.outputRemoveRetryAttempts),
9200
+ disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.disableXcpretty),
9201
+ formatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.formatter),
9202
+ xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcprettyFormatter),
9203
+ xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcprettyArgs),
9204
+ derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.derivedDataPath),
9205
+ shouldZipBuildProducts: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.shouldZipBuildProducts),
9206
+ outputXctestrun: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.outputXctestrun),
9207
+ resultBundlePath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.resultBundlePath),
9208
+ resultBundle: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.resultBundle),
9209
+ useClangReportName: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useClangReportName),
9210
+ parallelTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.parallelTesting),
9211
+ concurrentWorkers: OptionalConfigValue<Int?> = .fastlaneDefault(scanfile.concurrentWorkers),
9212
+ maxConcurrentSimulators: OptionalConfigValue<Int?> = .fastlaneDefault(scanfile.maxConcurrentSimulators),
9213
+ disableConcurrentTesting: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disableConcurrentTesting),
9214
+ skipBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipBuild),
9215
+ testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.testWithoutBuilding),
9216
+ buildForTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.buildForTesting),
9217
+ sdk: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.sdk),
9218
+ configuration: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.configuration),
9219
+ xcargs: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcargs),
9220
+ xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcconfig),
9221
+ appName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appName),
9222
+ deploymentTargetVersion: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.deploymentTargetVersion),
9223
+ slackUrl: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackUrl),
9224
+ slackChannel: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackChannel),
9225
+ slackMessage: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackMessage),
9226
+ slackUseWebhookConfiguredUsernameAndIcon: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackUseWebhookConfiguredUsernameAndIcon),
9227
+ slackUsername: String = scanfile.slackUsername,
9228
+ slackIconUrl: String = scanfile.slackIconUrl,
9229
+ skipSlack: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipSlack),
9230
+ slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackOnlyOnFailure),
9231
+ slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.slackDefaultPayloads),
9232
+ destination: Any? = scanfile.destination,
9233
+ runRosettaSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.runRosettaSimulator),
9234
+ catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.catalystPlatform),
9235
+ customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.customReportFileName),
9236
+ xcodebuildCommand: String = scanfile.xcodebuildCommand,
9237
+ clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.clonedSourcePackagesPath),
9238
+ skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipPackageDependenciesResolution),
9239
+ disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disablePackageAutomaticUpdates),
9240
+ useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useSystemScm),
9241
+ numberOfRetries: Int = scanfile.numberOfRetries,
9242
+ failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.failBuild)) -> [String: Any]
9051
9243
  {
9052
9244
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
9053
9245
  let projectArg = project.asRubyArgument(name: "project", type: nil)
@@ -9075,7 +9267,6 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9075
9267
  let addressSanitizerArg = addressSanitizer.asRubyArgument(name: "address_sanitizer", type: nil)
9076
9268
  let threadSanitizerArg = threadSanitizer.asRubyArgument(name: "thread_sanitizer", type: nil)
9077
9269
  let openReportArg = openReport.asRubyArgument(name: "open_report", type: nil)
9078
- let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
9079
9270
  let outputDirectoryArg = RubyCommand.Argument(name: "output_directory", value: outputDirectory, type: nil)
9080
9271
  let outputStyleArg = outputStyle.asRubyArgument(name: "output_style", type: nil)
9081
9272
  let outputTypesArg = RubyCommand.Argument(name: "output_types", value: outputTypes, type: nil)
@@ -9083,13 +9274,19 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9083
9274
  let buildlogPathArg = RubyCommand.Argument(name: "buildlog_path", value: buildlogPath, type: nil)
9084
9275
  let includeSimulatorLogsArg = includeSimulatorLogs.asRubyArgument(name: "include_simulator_logs", type: nil)
9085
9276
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
9277
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
9278
+ let outputRemoveRetryAttemptsArg = outputRemoveRetryAttempts.asRubyArgument(name: "output_remove_retry_attempts", type: nil)
9279
+ let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
9086
9280
  let formatterArg = formatter.asRubyArgument(name: "formatter", type: nil)
9281
+ let xcprettyFormatterArg = xcprettyFormatter.asRubyArgument(name: "xcpretty_formatter", type: nil)
9087
9282
  let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
9088
9283
  let derivedDataPathArg = derivedDataPath.asRubyArgument(name: "derived_data_path", type: nil)
9089
9284
  let shouldZipBuildProductsArg = shouldZipBuildProducts.asRubyArgument(name: "should_zip_build_products", type: nil)
9090
9285
  let outputXctestrunArg = outputXctestrun.asRubyArgument(name: "output_xctestrun", type: nil)
9286
+ let resultBundlePathArg = resultBundlePath.asRubyArgument(name: "result_bundle_path", type: nil)
9091
9287
  let resultBundleArg = resultBundle.asRubyArgument(name: "result_bundle", type: nil)
9092
9288
  let useClangReportNameArg = useClangReportName.asRubyArgument(name: "use_clang_report_name", type: nil)
9289
+ let parallelTestingArg = parallelTesting.asRubyArgument(name: "parallel_testing", type: nil)
9093
9290
  let concurrentWorkersArg = concurrentWorkers.asRubyArgument(name: "concurrent_workers", type: nil)
9094
9291
  let maxConcurrentSimulatorsArg = maxConcurrentSimulators.asRubyArgument(name: "max_concurrent_simulators", type: nil)
9095
9292
  let disableConcurrentTestingArg = disableConcurrentTesting.asRubyArgument(name: "disable_concurrent_testing", type: nil)
@@ -9112,6 +9309,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9112
9309
  let slackOnlyOnFailureArg = slackOnlyOnFailure.asRubyArgument(name: "slack_only_on_failure", type: nil)
9113
9310
  let slackDefaultPayloadsArg = slackDefaultPayloads.asRubyArgument(name: "slack_default_payloads", type: nil)
9114
9311
  let destinationArg = RubyCommand.Argument(name: "destination", value: destination, type: nil)
9312
+ let runRosettaSimulatorArg = runRosettaSimulator.asRubyArgument(name: "run_rosetta_simulator", type: nil)
9115
9313
  let catalystPlatformArg = catalystPlatform.asRubyArgument(name: "catalyst_platform", type: nil)
9116
9314
  let customReportFileNameArg = customReportFileName.asRubyArgument(name: "custom_report_file_name", type: nil)
9117
9315
  let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
@@ -9147,7 +9345,6 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9147
9345
  addressSanitizerArg,
9148
9346
  threadSanitizerArg,
9149
9347
  openReportArg,
9150
- disableXcprettyArg,
9151
9348
  outputDirectoryArg,
9152
9349
  outputStyleArg,
9153
9350
  outputTypesArg,
@@ -9155,13 +9352,19 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9155
9352
  buildlogPathArg,
9156
9353
  includeSimulatorLogsArg,
9157
9354
  suppressXcodeOutputArg,
9355
+ xcodebuildFormatterArg,
9356
+ outputRemoveRetryAttemptsArg,
9357
+ disableXcprettyArg,
9158
9358
  formatterArg,
9359
+ xcprettyFormatterArg,
9159
9360
  xcprettyArgsArg,
9160
9361
  derivedDataPathArg,
9161
9362
  shouldZipBuildProductsArg,
9162
9363
  outputXctestrunArg,
9364
+ resultBundlePathArg,
9163
9365
  resultBundleArg,
9164
9366
  useClangReportNameArg,
9367
+ parallelTestingArg,
9165
9368
  concurrentWorkersArg,
9166
9369
  maxConcurrentSimulatorsArg,
9167
9370
  disableConcurrentTestingArg,
@@ -9184,6 +9387,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9184
9387
  slackOnlyOnFailureArg,
9185
9388
  slackDefaultPayloadsArg,
9186
9389
  destinationArg,
9390
+ runRosettaSimulatorArg,
9187
9391
  catalystPlatformArg,
9188
9392
  customReportFileNameArg,
9189
9393
  xcodebuildCommandArg,
@@ -9197,7 +9401,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9197
9401
  .filter { $0?.value != nil }
9198
9402
  .compactMap { $0 }
9199
9403
  let command = RubyCommand(commandID: "", methodName: "scan", className: nil, args: args)
9200
- _ = runner.executeCommand(command)
9404
+ return parseDictionary(fromString: runner.executeCommand(command))
9201
9405
  }
9202
9406
 
9203
9407
  /**
@@ -9256,10 +9460,10 @@ public func scp(username: String,
9256
9460
  - endingLocale: **DEPRECATED!** Return the device to this locale after running tests
9257
9461
  - useAdbRoot: **DEPRECATED!** Restarts the adb daemon using `adb root` to allow access to screenshots directories on device. Use if getting 'Permission denied' errors
9258
9462
  - appApkPath: The path to the APK for the app under test
9259
- - testsApkPath: The path to the APK for the the tests bundle
9463
+ - testsApkPath: The path to the APK for the tests bundle
9260
9464
  - specificDevice: Use the device or emulator with the given serial number or qualifier
9261
9465
  - deviceType: Type of device used for screenshots. Matches Google Play Types (phone, sevenInch, tenInch, tv, wear)
9262
- - exitOnTestFailure: Whether or not to exit Screengrab on test failure. Exiting on failure will not copy sceenshots to local machine nor open sceenshots summary
9466
+ - exitOnTestFailure: Whether or not to exit Screengrab on test failure. Exiting on failure will not copy screenshots to local machine nor open screenshots summary
9263
9467
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
9264
9468
  - useTimestampSuffix: Add timestamp suffix to screenshot filename
9265
9469
  - adbHost: Configure the host used by adb to connect, allows running on remote devices farm
@@ -9430,6 +9634,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
9430
9634
  - description: Description of this release
9431
9635
  - isDraft: Whether the release should be marked as draft
9432
9636
  - isPrerelease: Whether the release should be marked as prerelease
9637
+ - isGenerateReleaseNotes: Whether the name and body of this release should be generated automatically
9433
9638
  - uploadAssets: Path to assets to be uploaded with the release
9434
9639
 
9435
9640
  - returns: A hash containing all relevant information of this release
@@ -9449,6 +9654,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
9449
9654
  description: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9450
9655
  isDraft: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9451
9656
  isPrerelease: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9657
+ isGenerateReleaseNotes: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9452
9658
  uploadAssets: OptionalConfigValue<[String]?> = .fastlaneDefault(nil)) -> [String: Any]
9453
9659
  {
9454
9660
  let repositoryNameArg = RubyCommand.Argument(name: "repository_name", value: repositoryName, type: nil)
@@ -9461,6 +9667,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
9461
9667
  let descriptionArg = description.asRubyArgument(name: "description", type: nil)
9462
9668
  let isDraftArg = isDraft.asRubyArgument(name: "is_draft", type: nil)
9463
9669
  let isPrereleaseArg = isPrerelease.asRubyArgument(name: "is_prerelease", type: nil)
9670
+ let isGenerateReleaseNotesArg = isGenerateReleaseNotes.asRubyArgument(name: "is_generate_release_notes", type: nil)
9464
9671
  let uploadAssetsArg = uploadAssets.asRubyArgument(name: "upload_assets", type: nil)
9465
9672
  let array: [RubyCommand.Argument?] = [repositoryNameArg,
9466
9673
  serverUrlArg,
@@ -9472,6 +9679,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
9472
9679
  descriptionArg,
9473
9680
  isDraftArg,
9474
9681
  isPrereleaseArg,
9682
+ isGenerateReleaseNotesArg,
9475
9683
  uploadAssetsArg]
9476
9684
  let args: [RubyCommand.Argument] = array
9477
9685
  .filter { $0?.value != nil }
@@ -9550,6 +9758,7 @@ public func setPodKey(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefaul
9550
9758
  - parameters:
9551
9759
  - force: Force setup, even if not executed by CI
9552
9760
  - provider: CI provider. If none is set, the provider is detected automatically
9761
+ - timeout: Set a custom timeout in seconds for keychain. Set `0` if you want to specify 'no time-out'
9553
9762
 
9554
9763
  - Creates a new temporary keychain for use with match|
9555
9764
  - Switches match to `readonly` mode to not create new profiles/cert on CI|
@@ -9558,12 +9767,15 @@ public func setPodKey(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefaul
9558
9767
  This action helps with CI integration. Add this to the top of your Fastfile if you use CI.
9559
9768
  */
9560
9769
  public func setupCi(force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9561
- provider: OptionalConfigValue<String?> = .fastlaneDefault(nil))
9770
+ provider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9771
+ timeout: Int = 3600)
9562
9772
  {
9563
9773
  let forceArg = force.asRubyArgument(name: "force", type: nil)
9564
9774
  let providerArg = provider.asRubyArgument(name: "provider", type: nil)
9775
+ let timeoutArg = RubyCommand.Argument(name: "timeout", value: timeout, type: nil)
9565
9776
  let array: [RubyCommand.Argument?] = [forceArg,
9566
- providerArg]
9777
+ providerArg,
9778
+ timeoutArg]
9567
9779
  let args: [RubyCommand.Argument] = array
9568
9780
  .filter { $0?.value != nil }
9569
9781
  .compactMap { $0 }
@@ -9720,6 +9932,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
9720
9932
  - development: Renew the development certificate instead of the production one
9721
9933
  - skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
9722
9934
  - force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
9935
+ - includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
9723
9936
  - appIdentifier: The bundle identifier of your app
9724
9937
  - 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
9938
  - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)
@@ -9749,6 +9962,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
9749
9962
  development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9750
9963
  skipInstall: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9751
9964
  force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9965
+ includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9752
9966
  appIdentifier: String,
9753
9967
  apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9754
9968
  apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
@@ -9774,6 +9988,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
9774
9988
  let developmentArg = development.asRubyArgument(name: "development", type: nil)
9775
9989
  let skipInstallArg = skipInstall.asRubyArgument(name: "skip_install", type: nil)
9776
9990
  let forceArg = force.asRubyArgument(name: "force", type: nil)
9991
+ let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
9777
9992
  let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
9778
9993
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
9779
9994
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -9798,6 +10013,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
9798
10013
  developmentArg,
9799
10014
  skipInstallArg,
9800
10015
  forceArg,
10016
+ includeMacInProfilesArg,
9801
10017
  appIdentifierArg,
9802
10018
  apiKeyPathArg,
9803
10019
  apiKeyArg,
@@ -10116,7 +10332,7 @@ public func slather(buildDirectory: OptionalConfigValue<String?> = .fastlaneDefa
10116
10332
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
10117
10333
  - headless: Enabling this option will prevent displaying the simulator window
10118
10334
  - 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`
10335
+ - 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
10336
  - localizeSimulator: Enabling this option will configure the Simulator's system language
10121
10337
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
10122
10338
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
@@ -10127,7 +10343,6 @@ public func slather(buildDirectory: OptionalConfigValue<String?> = .fastlaneDefa
10127
10343
  - clean: Should the project be cleaned before building it?
10128
10344
  - testWithoutBuilding: Test without building, requires a derived data path
10129
10345
  - configuration: The configuration to use when building the app. Defaults to 'Release'
10130
- - xcprettyArgs: Additional xcpretty arguments
10131
10346
  - sdk: The SDK that should be used for building the application
10132
10347
  - scheme: The scheme you want to use, this must be the scheme for the UI Tests
10133
10348
  - numberOfRetries: The number of times a test can fail before snapshot should stop retrying
@@ -10144,6 +10359,8 @@ public func slather(buildDirectory: OptionalConfigValue<String?> = .fastlaneDefa
10144
10359
  - testplan: The testplan associated with the scheme that should be used for testing
10145
10360
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
10146
10361
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
10362
+ - 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/)
10363
+ - xcprettyArgs: **DEPRECATED!** Use `xcodebuild_formatter: ''` instead - Additional xcpretty arguments
10147
10364
  - disableXcpretty: Disable xcpretty formatting of build
10148
10365
  - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
10149
10366
  - useSystemScm: Lets xcodebuild use system's scm configuration
@@ -10176,7 +10393,6 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10176
10393
  clean: OptionalConfigValue<Bool> = .fastlaneDefault(snapshotfile.clean),
10177
10394
  testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(snapshotfile.testWithoutBuilding),
10178
10395
  configuration: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.configuration),
10179
- xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.xcprettyArgs),
10180
10396
  sdk: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.sdk),
10181
10397
  scheme: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.scheme),
10182
10398
  numberOfRetries: Int = snapshotfile.numberOfRetries,
@@ -10193,6 +10409,8 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10193
10409
  testplan: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.testplan),
10194
10410
  onlyTesting: Any? = snapshotfile.onlyTesting,
10195
10411
  skipTesting: Any? = snapshotfile.skipTesting,
10412
+ xcodebuildFormatter: String = snapshotfile.xcodebuildFormatter,
10413
+ xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.xcprettyArgs),
10196
10414
  disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(snapshotfile.disableXcpretty),
10197
10415
  suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(snapshotfile.suppressXcodeOutput),
10198
10416
  useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(snapshotfile.useSystemScm))
@@ -10225,7 +10443,6 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10225
10443
  let cleanArg = clean.asRubyArgument(name: "clean", type: nil)
10226
10444
  let testWithoutBuildingArg = testWithoutBuilding.asRubyArgument(name: "test_without_building", type: nil)
10227
10445
  let configurationArg = configuration.asRubyArgument(name: "configuration", type: nil)
10228
- let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
10229
10446
  let sdkArg = sdk.asRubyArgument(name: "sdk", type: nil)
10230
10447
  let schemeArg = scheme.asRubyArgument(name: "scheme", type: nil)
10231
10448
  let numberOfRetriesArg = RubyCommand.Argument(name: "number_of_retries", value: numberOfRetries, type: nil)
@@ -10242,6 +10459,8 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10242
10459
  let testplanArg = testplan.asRubyArgument(name: "testplan", type: nil)
10243
10460
  let onlyTestingArg = RubyCommand.Argument(name: "only_testing", value: onlyTesting, type: nil)
10244
10461
  let skipTestingArg = RubyCommand.Argument(name: "skip_testing", value: skipTesting, type: nil)
10462
+ let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
10463
+ let xcprettyArgsArg = xcprettyArgs.asRubyArgument(name: "xcpretty_args", type: nil)
10245
10464
  let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
10246
10465
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
10247
10466
  let useSystemScmArg = useSystemScm.asRubyArgument(name: "use_system_scm", type: nil)
@@ -10273,7 +10492,6 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10273
10492
  cleanArg,
10274
10493
  testWithoutBuildingArg,
10275
10494
  configurationArg,
10276
- xcprettyArgsArg,
10277
10495
  sdkArg,
10278
10496
  schemeArg,
10279
10497
  numberOfRetriesArg,
@@ -10290,6 +10508,8 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10290
10508
  testplanArg,
10291
10509
  onlyTestingArg,
10292
10510
  skipTestingArg,
10511
+ xcodebuildFormatterArg,
10512
+ xcprettyArgsArg,
10293
10513
  disableXcprettyArg,
10294
10514
  suppressXcodeOutputArg,
10295
10515
  useSystemScmArg]
@@ -10668,6 +10888,7 @@ public func ssh(username: String,
10668
10888
  - skipUploadImages: Whether to skip uploading images, screenshots not included
10669
10889
  - skipUploadScreenshots: Whether to skip uploading SCREENSHOTS
10670
10890
  - trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
10891
+ - trackPromoteReleaseStatus: Promoted track release status (used when promoting a track) - valid values are completed, draft, halted, inProgress
10671
10892
  - validateOnly: Only validate changes with Google Play rather than actually publish
10672
10893
  - mapping: Path to the mapping file to upload (mapping.txt or native-debug-symbols.zip alike)
10673
10894
  - mappingPaths: An array of paths to mapping files to upload (mapping.txt or native-debug-symbols.zip alike)
@@ -10709,6 +10930,7 @@ public func supply(packageName: String,
10709
10930
  skipUploadImages: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10710
10931
  skipUploadScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10711
10932
  trackPromoteTo: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10933
+ trackPromoteReleaseStatus: String = "completed",
10712
10934
  validateOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10713
10935
  mapping: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10714
10936
  mappingPaths: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
@@ -10748,6 +10970,7 @@ public func supply(packageName: String,
10748
10970
  let skipUploadImagesArg = skipUploadImages.asRubyArgument(name: "skip_upload_images", type: nil)
10749
10971
  let skipUploadScreenshotsArg = skipUploadScreenshots.asRubyArgument(name: "skip_upload_screenshots", type: nil)
10750
10972
  let trackPromoteToArg = trackPromoteTo.asRubyArgument(name: "track_promote_to", type: nil)
10973
+ let trackPromoteReleaseStatusArg = RubyCommand.Argument(name: "track_promote_release_status", value: trackPromoteReleaseStatus, type: nil)
10751
10974
  let validateOnlyArg = validateOnly.asRubyArgument(name: "validate_only", type: nil)
10752
10975
  let mappingArg = mapping.asRubyArgument(name: "mapping", type: nil)
10753
10976
  let mappingPathsArg = mappingPaths.asRubyArgument(name: "mapping_paths", type: nil)
@@ -10786,6 +11009,7 @@ public func supply(packageName: String,
10786
11009
  skipUploadImagesArg,
10787
11010
  skipUploadScreenshotsArg,
10788
11011
  trackPromoteToArg,
11012
+ trackPromoteReleaseStatusArg,
10789
11013
  validateOnlyArg,
10790
11014
  mappingArg,
10791
11015
  mappingPathsArg,
@@ -10882,7 +11106,7 @@ public func swiftlint(mode: String = "lint",
10882
11106
  Easily sync your certificates and profiles across your team (via _match_)
10883
11107
 
10884
11108
  - parameters:
10885
- - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
11109
+ - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution, developer_id_installer
10886
11110
  - additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
10887
11111
  - readonly: Only fetch existing certificates and profiles, don't generate new ones
10888
11112
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
@@ -10906,18 +11130,23 @@ public func swiftlint(mode: String = "lint",
10906
11130
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
10907
11131
  - googleCloudKeysFile: Path to the gc_keys.json file
10908
11132
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
11133
+ - skipGoogleCloudAccountConfirmation: Skips confirming to use the system google account
10909
11134
  - s3Region: Name of the S3 region
10910
11135
  - s3AccessKey: S3 access key
10911
11136
  - s3SecretAccessKey: S3 secret access key
10912
11137
  - s3Bucket: Name of the S3 bucket
10913
11138
  - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
11139
+ - gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
11140
+ - gitlabHost: GitLab Host (i.e. 'https://gitlab.com')
10914
11141
  - keychainName: Keychain the items should be imported to
10915
11142
  - 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
11143
  - force: Renew the provisioning profiles every time you run match
10917
11144
  - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile types 'appstore' and 'developer_id'
11145
+ - includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
10918
11146
  - 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'
11147
+ - 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
11148
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
11149
+ - safeRemoveCerts: Remove certs from repository during nuke without revoking them on the developer portal
10921
11150
  - skipDocs: Skip generation of a README.md for the created git repository
10922
11151
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
10923
11152
  - 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 +11184,23 @@ public func syncCodeSigning(type: String = "development",
10955
11184
  googleCloudBucketName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10956
11185
  googleCloudKeysFile: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10957
11186
  googleCloudProjectId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11187
+ skipGoogleCloudAccountConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10958
11188
  s3Region: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10959
11189
  s3AccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10960
11190
  s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10961
11191
  s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10962
11192
  s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11193
+ gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11194
+ gitlabHost: String = "https://gitlab.com",
10963
11195
  keychainName: String = "login.keychain",
10964
11196
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10965
11197
  force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10966
11198
  forceForNewDevices: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11199
+ includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10967
11200
  includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10968
11201
  forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10969
11202
  skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11203
+ safeRemoveCerts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10970
11204
  skipDocs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10971
11205
  platform: String = "ios",
10972
11206
  deriveCatalystAppIdentifier: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -11002,18 +11236,23 @@ public func syncCodeSigning(type: String = "development",
11002
11236
  let googleCloudBucketNameArg = googleCloudBucketName.asRubyArgument(name: "google_cloud_bucket_name", type: nil)
11003
11237
  let googleCloudKeysFileArg = googleCloudKeysFile.asRubyArgument(name: "google_cloud_keys_file", type: nil)
11004
11238
  let googleCloudProjectIdArg = googleCloudProjectId.asRubyArgument(name: "google_cloud_project_id", type: nil)
11239
+ let skipGoogleCloudAccountConfirmationArg = skipGoogleCloudAccountConfirmation.asRubyArgument(name: "skip_google_cloud_account_confirmation", type: nil)
11005
11240
  let s3RegionArg = s3Region.asRubyArgument(name: "s3_region", type: nil)
11006
11241
  let s3AccessKeyArg = s3AccessKey.asRubyArgument(name: "s3_access_key", type: nil)
11007
11242
  let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
11008
11243
  let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
11009
11244
  let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
11245
+ let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
11246
+ let gitlabHostArg = RubyCommand.Argument(name: "gitlab_host", value: gitlabHost, type: nil)
11010
11247
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
11011
11248
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
11012
11249
  let forceArg = force.asRubyArgument(name: "force", type: nil)
11013
11250
  let forceForNewDevicesArg = forceForNewDevices.asRubyArgument(name: "force_for_new_devices", type: nil)
11251
+ let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
11014
11252
  let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
11015
11253
  let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
11016
11254
  let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
11255
+ let safeRemoveCertsArg = safeRemoveCerts.asRubyArgument(name: "safe_remove_certs", type: nil)
11017
11256
  let skipDocsArg = skipDocs.asRubyArgument(name: "skip_docs", type: nil)
11018
11257
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
11019
11258
  let deriveCatalystAppIdentifierArg = deriveCatalystAppIdentifier.asRubyArgument(name: "derive_catalyst_app_identifier", type: nil)
@@ -11048,18 +11287,23 @@ public func syncCodeSigning(type: String = "development",
11048
11287
  googleCloudBucketNameArg,
11049
11288
  googleCloudKeysFileArg,
11050
11289
  googleCloudProjectIdArg,
11290
+ skipGoogleCloudAccountConfirmationArg,
11051
11291
  s3RegionArg,
11052
11292
  s3AccessKeyArg,
11053
11293
  s3SecretAccessKeyArg,
11054
11294
  s3BucketArg,
11055
11295
  s3ObjectPrefixArg,
11296
+ gitlabProjectArg,
11297
+ gitlabHostArg,
11056
11298
  keychainNameArg,
11057
11299
  keychainPasswordArg,
11058
11300
  forceArg,
11059
11301
  forceForNewDevicesArg,
11302
+ includeMacInProfilesArg,
11060
11303
  includeAllCertificatesArg,
11061
11304
  forceForNewCertificatesArg,
11062
11305
  skipConfirmationArg,
11306
+ safeRemoveCertsArg,
11063
11307
  skipDocsArg,
11064
11308
  platformArg,
11065
11309
  deriveCatalystAppIdentifierArg,
@@ -11204,6 +11448,7 @@ public func testfairy(apiKey: String,
11204
11448
  - 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
11449
  - 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
11450
  - rejectBuildWaitingForReview: Expire previous if it's 'waiting for review'
11451
+ - submitBetaReview: Send the build for a beta review
11207
11452
 
11208
11453
  More details can be found on https://docs.fastlane.tools/actions/pilot/.
11209
11454
  This integration will only do the TestFlight upload.
@@ -11245,7 +11490,8 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11245
11490
  waitProcessingInterval: Int = 30,
11246
11491
  waitProcessingTimeoutDuration: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
11247
11492
  waitForUploadedBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11248
- rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false))
11493
+ rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11494
+ submitBetaReview: OptionalConfigValue<Bool> = .fastlaneDefault(true))
11249
11495
  {
11250
11496
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
11251
11497
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -11285,6 +11531,7 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11285
11531
  let waitProcessingTimeoutDurationArg = waitProcessingTimeoutDuration.asRubyArgument(name: "wait_processing_timeout_duration", type: nil)
11286
11532
  let waitForUploadedBuildArg = waitForUploadedBuild.asRubyArgument(name: "wait_for_uploaded_build", type: nil)
11287
11533
  let rejectBuildWaitingForReviewArg = rejectBuildWaitingForReview.asRubyArgument(name: "reject_build_waiting_for_review", type: nil)
11534
+ let submitBetaReviewArg = submitBetaReview.asRubyArgument(name: "submit_beta_review", type: nil)
11288
11535
  let array: [RubyCommand.Argument?] = [apiKeyPathArg,
11289
11536
  apiKeyArg,
11290
11537
  usernameArg,
@@ -11322,7 +11569,8 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11322
11569
  waitProcessingIntervalArg,
11323
11570
  waitProcessingTimeoutDurationArg,
11324
11571
  waitForUploadedBuildArg,
11325
- rejectBuildWaitingForReviewArg]
11572
+ rejectBuildWaitingForReviewArg,
11573
+ submitBetaReviewArg]
11326
11574
  let args: [RubyCommand.Argument] = array
11327
11575
  .filter { $0?.value != nil }
11328
11576
  .compactMap { $0 }
@@ -11330,6 +11578,53 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11330
11578
  _ = runner.executeCommand(command)
11331
11579
  }
11332
11580
 
11581
+ /**
11582
+ Convert the Xcode plist log to a JUnit report
11583
+
11584
+ - parameters:
11585
+ - path: Path to the directory that should be converted
11586
+ - extension: The extension for the newly created file. Usually .xml or .junit
11587
+ - outputDirectory: Directory in which the xml files should be written to. Same directory as source by default
11588
+ - outputFilename: Filename the xml file should be written to. Defaults to name of input file. (Only works if one input file is used)
11589
+ - failBuild: Should this step stop the build if the tests fail? Set this to false if you're handling this with a test reporter
11590
+ - xcprettyNaming: Produces class name and test name identical to xcpretty naming in junit file
11591
+ - silent: Silences all output
11592
+ - outputRemoveRetryAttempts: Doesn't include retry attempts in the output
11593
+
11594
+ - returns: A hash with the key being the path of the generated file, the value being if the tests were successful
11595
+ */
11596
+ public func trainer(path: String = ".",
11597
+ extension: String = ".xml",
11598
+ outputDirectory: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11599
+ outputFilename: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11600
+ failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(true),
11601
+ xcprettyNaming: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11602
+ silent: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11603
+ outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(false))
11604
+ {
11605
+ let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
11606
+ let extensionArg = RubyCommand.Argument(name: "extension", value: `extension`, type: nil)
11607
+ let outputDirectoryArg = outputDirectory.asRubyArgument(name: "output_directory", type: nil)
11608
+ let outputFilenameArg = outputFilename.asRubyArgument(name: "output_filename", type: nil)
11609
+ let failBuildArg = failBuild.asRubyArgument(name: "fail_build", type: nil)
11610
+ let xcprettyNamingArg = xcprettyNaming.asRubyArgument(name: "xcpretty_naming", type: nil)
11611
+ let silentArg = silent.asRubyArgument(name: "silent", type: nil)
11612
+ let outputRemoveRetryAttemptsArg = outputRemoveRetryAttempts.asRubyArgument(name: "output_remove_retry_attempts", type: nil)
11613
+ let array: [RubyCommand.Argument?] = [pathArg,
11614
+ extensionArg,
11615
+ outputDirectoryArg,
11616
+ outputFilenameArg,
11617
+ failBuildArg,
11618
+ xcprettyNamingArg,
11619
+ silentArg,
11620
+ outputRemoveRetryAttemptsArg]
11621
+ let args: [RubyCommand.Argument] = array
11622
+ .filter { $0?.value != nil }
11623
+ .compactMap { $0 }
11624
+ let command = RubyCommand(commandID: "", methodName: "trainer", className: nil, args: args)
11625
+ _ = runner.executeCommand(command)
11626
+ }
11627
+
11333
11628
  /**
11334
11629
  Upload a new build to [Tryouts](https://tryouts.io/)
11335
11630
 
@@ -11505,10 +11800,12 @@ public func updateAppIdentifier(xcodeproj: String,
11505
11800
  - parameters:
11506
11801
  - path: Path to your Xcode project
11507
11802
  - useAutomaticSigning: Defines if project should use automatic signing
11803
+ - sdk: Build target SDKs (iphoneos*, macosx*, iphonesimulator*)
11508
11804
  - teamId: Team ID, is used when upgrading project
11509
11805
  - targets: Specify targets you want to toggle the signing mech. (default to all targets)
11510
11806
  - buildConfigurations: Specify build_configurations you want to toggle the signing mech. (default to all configurations)
11511
11807
  - codeSignIdentity: Code signing identity type (iPhone Developer, iPhone Distribution)
11808
+ - entitlementsFilePath: Path to your entitlements file
11512
11809
  - profileName: Provisioning profile name to use for code signing
11513
11810
  - profileUuid: Provisioning profile UUID to use for code signing
11514
11811
  - bundleIdentifier: Application Product Bundle Identifier
@@ -11519,29 +11816,35 @@ public func updateAppIdentifier(xcodeproj: String,
11519
11816
  */
11520
11817
  public func updateCodeSigningSettings(path: String,
11521
11818
  useAutomaticSigning: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11819
+ sdk: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11522
11820
  teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11523
11821
  targets: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
11524
11822
  buildConfigurations: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
11525
11823
  codeSignIdentity: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11824
+ entitlementsFilePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11526
11825
  profileName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11527
11826
  profileUuid: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11528
11827
  bundleIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil))
11529
11828
  {
11530
11829
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
11531
11830
  let useAutomaticSigningArg = useAutomaticSigning.asRubyArgument(name: "use_automatic_signing", type: nil)
11831
+ let sdkArg = sdk.asRubyArgument(name: "sdk", type: nil)
11532
11832
  let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
11533
11833
  let targetsArg = targets.asRubyArgument(name: "targets", type: nil)
11534
11834
  let buildConfigurationsArg = buildConfigurations.asRubyArgument(name: "build_configurations", type: nil)
11535
11835
  let codeSignIdentityArg = codeSignIdentity.asRubyArgument(name: "code_sign_identity", type: nil)
11836
+ let entitlementsFilePathArg = entitlementsFilePath.asRubyArgument(name: "entitlements_file_path", type: nil)
11536
11837
  let profileNameArg = profileName.asRubyArgument(name: "profile_name", type: nil)
11537
11838
  let profileUuidArg = profileUuid.asRubyArgument(name: "profile_uuid", type: nil)
11538
11839
  let bundleIdentifierArg = bundleIdentifier.asRubyArgument(name: "bundle_identifier", type: nil)
11539
11840
  let array: [RubyCommand.Argument?] = [pathArg,
11540
11841
  useAutomaticSigningArg,
11842
+ sdkArg,
11541
11843
  teamIdArg,
11542
11844
  targetsArg,
11543
11845
  buildConfigurationsArg,
11544
11846
  codeSignIdentityArg,
11847
+ entitlementsFilePathArg,
11545
11848
  profileNameArg,
11546
11849
  profileUuidArg,
11547
11850
  bundleIdentifierArg]
@@ -12033,8 +12336,9 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
12033
12336
  - skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
12034
12337
  - force: Skip verification of HTML preview file
12035
12338
  - 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
12339
+ - 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
12340
  - submitForReview: Submit the new version for Review after uploading everything
12341
+ - verifyOnly: Verifies archive with App Store Connect without uploading
12038
12342
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
12039
12343
  - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
12040
12344
  - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
@@ -12106,6 +12410,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12106
12410
  overwriteScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12107
12411
  syncScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12108
12412
  submitForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12413
+ verifyOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12109
12414
  rejectIfPossible: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12110
12415
  automaticRelease: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
12111
12416
  autoReleaseDate: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
@@ -12170,6 +12475,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12170
12475
  let overwriteScreenshotsArg = overwriteScreenshots.asRubyArgument(name: "overwrite_screenshots", type: nil)
12171
12476
  let syncScreenshotsArg = syncScreenshots.asRubyArgument(name: "sync_screenshots", type: nil)
12172
12477
  let submitForReviewArg = submitForReview.asRubyArgument(name: "submit_for_review", type: nil)
12478
+ let verifyOnlyArg = verifyOnly.asRubyArgument(name: "verify_only", type: nil)
12173
12479
  let rejectIfPossibleArg = rejectIfPossible.asRubyArgument(name: "reject_if_possible", type: nil)
12174
12480
  let automaticReleaseArg = automaticRelease.asRubyArgument(name: "automatic_release", type: nil)
12175
12481
  let autoReleaseDateArg = autoReleaseDate.asRubyArgument(name: "auto_release_date", type: nil)
@@ -12233,6 +12539,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12233
12539
  overwriteScreenshotsArg,
12234
12540
  syncScreenshotsArg,
12235
12541
  submitForReviewArg,
12542
+ verifyOnlyArg,
12236
12543
  rejectIfPossibleArg,
12237
12544
  automaticReleaseArg,
12238
12545
  autoReleaseDateArg,
@@ -12308,6 +12615,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12308
12615
  - skipUploadImages: Whether to skip uploading images, screenshots not included
12309
12616
  - skipUploadScreenshots: Whether to skip uploading SCREENSHOTS
12310
12617
  - trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
12618
+ - trackPromoteReleaseStatus: Promoted track release status (used when promoting a track) - valid values are completed, draft, halted, inProgress
12311
12619
  - validateOnly: Only validate changes with Google Play rather than actually publish
12312
12620
  - mapping: Path to the mapping file to upload (mapping.txt or native-debug-symbols.zip alike)
12313
12621
  - mappingPaths: An array of paths to mapping files to upload (mapping.txt or native-debug-symbols.zip alike)
@@ -12349,6 +12657,7 @@ public func uploadToPlayStore(packageName: String,
12349
12657
  skipUploadImages: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12350
12658
  skipUploadScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12351
12659
  trackPromoteTo: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12660
+ trackPromoteReleaseStatus: String = "completed",
12352
12661
  validateOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12353
12662
  mapping: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12354
12663
  mappingPaths: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
@@ -12388,6 +12697,7 @@ public func uploadToPlayStore(packageName: String,
12388
12697
  let skipUploadImagesArg = skipUploadImages.asRubyArgument(name: "skip_upload_images", type: nil)
12389
12698
  let skipUploadScreenshotsArg = skipUploadScreenshots.asRubyArgument(name: "skip_upload_screenshots", type: nil)
12390
12699
  let trackPromoteToArg = trackPromoteTo.asRubyArgument(name: "track_promote_to", type: nil)
12700
+ let trackPromoteReleaseStatusArg = RubyCommand.Argument(name: "track_promote_release_status", value: trackPromoteReleaseStatus, type: nil)
12391
12701
  let validateOnlyArg = validateOnly.asRubyArgument(name: "validate_only", type: nil)
12392
12702
  let mappingArg = mapping.asRubyArgument(name: "mapping", type: nil)
12393
12703
  let mappingPathsArg = mappingPaths.asRubyArgument(name: "mapping_paths", type: nil)
@@ -12426,6 +12736,7 @@ public func uploadToPlayStore(packageName: String,
12426
12736
  skipUploadImagesArg,
12427
12737
  skipUploadScreenshotsArg,
12428
12738
  trackPromoteToArg,
12739
+ trackPromoteReleaseStatusArg,
12429
12740
  validateOnlyArg,
12430
12741
  mappingArg,
12431
12742
  mappingPathsArg,
@@ -12544,6 +12855,7 @@ public func uploadToPlayStoreInternalAppSharing(packageName: String,
12544
12855
  - 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
12856
  - 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
12857
  - rejectBuildWaitingForReview: Expire previous if it's 'waiting for review'
12858
+ - submitBetaReview: Send the build for a beta review
12547
12859
 
12548
12860
  More details can be found on https://docs.fastlane.tools/actions/pilot/.
12549
12861
  This integration will only do the TestFlight upload.
@@ -12585,7 +12897,8 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12585
12897
  waitProcessingInterval: Int = 30,
12586
12898
  waitProcessingTimeoutDuration: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
12587
12899
  waitForUploadedBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12588
- rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false))
12900
+ rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12901
+ submitBetaReview: OptionalConfigValue<Bool> = .fastlaneDefault(true))
12589
12902
  {
12590
12903
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
12591
12904
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -12625,6 +12938,7 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12625
12938
  let waitProcessingTimeoutDurationArg = waitProcessingTimeoutDuration.asRubyArgument(name: "wait_processing_timeout_duration", type: nil)
12626
12939
  let waitForUploadedBuildArg = waitForUploadedBuild.asRubyArgument(name: "wait_for_uploaded_build", type: nil)
12627
12940
  let rejectBuildWaitingForReviewArg = rejectBuildWaitingForReview.asRubyArgument(name: "reject_build_waiting_for_review", type: nil)
12941
+ let submitBetaReviewArg = submitBetaReview.asRubyArgument(name: "submit_beta_review", type: nil)
12628
12942
  let array: [RubyCommand.Argument?] = [apiKeyPathArg,
12629
12943
  apiKeyArg,
12630
12944
  usernameArg,
@@ -12662,7 +12976,8 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12662
12976
  waitProcessingIntervalArg,
12663
12977
  waitProcessingTimeoutDurationArg,
12664
12978
  waitForUploadedBuildArg,
12665
- rejectBuildWaitingForReviewArg]
12979
+ rejectBuildWaitingForReviewArg,
12980
+ submitBetaReviewArg]
12666
12981
  let args: [RubyCommand.Argument] = array
12667
12982
  .filter { $0?.value != nil }
12668
12983
  .compactMap { $0 }
@@ -12908,7 +13223,7 @@ public func xcexport() {
12908
13223
  Change the xcode-path to use. Useful for beta versions of Xcode
12909
13224
 
12910
13225
  Select and build with the Xcode installed at the provided path.
12911
- Use the `xcversion` action if you want to select an Xcode:
13226
+ Use the `xcodes` action if you want to select an Xcode:
12912
13227
  - Based on a version specifier or
12913
13228
  - You don't have known, stable paths, as may happen in a CI environment.
12914
13229
  */
@@ -12978,6 +13293,45 @@ public func xcodebuild() {
12978
13293
  _ = runner.executeCommand(command)
12979
13294
  }
12980
13295
 
13296
+ /**
13297
+ Make sure a certain version of Xcode is installed, installing it only if needed
13298
+
13299
+ - parameters:
13300
+ - version: The version number of the version of Xcode to install. Defaults to the value specified in the .xcode-version file
13301
+ - updateList: Whether the list of available Xcode versions should be updated before running the install command
13302
+ - 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
13303
+ - binaryPath: Where the xcodes binary lives on your system (full path)
13304
+ - 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
13305
+
13306
+ - returns: The path to the newly installed Xcode version
13307
+
13308
+ 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).
13309
+ This will make sure to use the correct Xcode version for later actions.
13310
+ 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
13311
+ */
13312
+ @discardableResult public func xcodes(version: String,
13313
+ updateList: OptionalConfigValue<Bool> = .fastlaneDefault(true),
13314
+ selectForCurrentBuildOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
13315
+ binaryPath: String = "/opt/homebrew/bin/xcodes",
13316
+ xcodesArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil)) -> String
13317
+ {
13318
+ let versionArg = RubyCommand.Argument(name: "version", value: version, type: nil)
13319
+ let updateListArg = updateList.asRubyArgument(name: "update_list", type: nil)
13320
+ let selectForCurrentBuildOnlyArg = selectForCurrentBuildOnly.asRubyArgument(name: "select_for_current_build_only", type: nil)
13321
+ let binaryPathArg = RubyCommand.Argument(name: "binary_path", value: binaryPath, type: nil)
13322
+ let xcodesArgsArg = xcodesArgs.asRubyArgument(name: "xcodes_args", type: nil)
13323
+ let array: [RubyCommand.Argument?] = [versionArg,
13324
+ updateListArg,
13325
+ selectForCurrentBuildOnlyArg,
13326
+ binaryPathArg,
13327
+ xcodesArgsArg]
13328
+ let args: [RubyCommand.Argument] = array
13329
+ .filter { $0?.value != nil }
13330
+ .compactMap { $0 }
13331
+ let command = RubyCommand(commandID: "", methodName: "xcodes", className: nil, args: args)
13332
+ return runner.executeCommand(command)
13333
+ }
13334
+
12981
13335
  /**
12982
13336
  Nice code coverage reports without hassle
12983
13337
 
@@ -13040,7 +13394,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
13040
13394
  coverallsServiceJobId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13041
13395
  coverallsRepoToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13042
13396
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13043
- ideFoundationPath: String = "/Applications/Xcode-13.Release.Candidate.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13397
+ ideFoundationPath: String = "/Applications/Xcode-14.1.0.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13044
13398
  legacySupport: OptionalConfigValue<Bool> = .fastlaneDefault(false))
13045
13399
  {
13046
13400
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
@@ -13131,9 +13485,10 @@ public func xctool() {
13131
13485
  /**
13132
13486
  Select an Xcode to use by version specifier
13133
13487
 
13134
- - parameter version: The version of Xcode to select specified as a Gem::Version requirement string (e.g. '~> 7.1.0')
13488
+ - 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
13489
 
13136
13490
  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)
13491
+ You can either manually provide a specific version using `version:` or you make use of the `.xcode-version` file.
13137
13492
  */
13138
13493
  public func xcversion(version: String) {
13139
13494
  let versionArg = RubyCommand.Argument(name: "version", value: version, type: nil)
@@ -13232,14 +13587,14 @@ func parseInt(fromString: String, function: String = #function) -> Int {
13232
13587
  return NSString(string: fromString.trimmingCharacters(in: .punctuationCharacters)).integerValue
13233
13588
  }
13234
13589
 
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()
13590
+ public let deliverfile: Deliverfile = .init()
13591
+ public let gymfile: Gymfile = .init()
13592
+ public let matchfile: Matchfile = .init()
13593
+ public let precheckfile: Precheckfile = .init()
13594
+ public let scanfile: Scanfile = .init()
13595
+ public let screengrabfile: Screengrabfile = .init()
13596
+ public let snapshotfile: Snapshotfile = .init()
13242
13597
 
13243
13598
  // Please don't remove the lines below
13244
13599
  // They are used to detect outdated files
13245
- // FastlaneRunnerAPIVersion [0.9.137]
13600
+ // FastlaneRunnerAPIVersion [0.9.169]