fastlane 2.224.0 → 2.232.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +98 -92
  3. data/bin/fastlane +2 -2
  4. data/cert/lib/cert/options.rb +7 -2
  5. data/cert/lib/cert/runner.rb +23 -11
  6. data/deliver/lib/assets/summary.html.erb +3 -3
  7. data/deliver/lib/deliver/app_screenshot.rb +215 -347
  8. data/deliver/lib/deliver/app_screenshot_iterator.rb +4 -1
  9. data/deliver/lib/deliver/app_screenshot_validator.rb +5 -21
  10. data/deliver/lib/deliver/loader.rb +2 -9
  11. data/deliver/lib/deliver/options.rb +1 -1
  12. data/deliver/lib/deliver/runner.rb +1 -1
  13. data/deliver/lib/deliver/upload_metadata.rb +5 -0
  14. data/deliver/lib/deliver/upload_screenshots.rb +4 -2
  15. data/fastlane/lib/assets/completions/completion.bash +1 -1
  16. data/fastlane/lib/assets/completions/completion.sh +2 -2
  17. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +16 -15
  18. data/fastlane/lib/fastlane/actions/appium.rb +1 -1
  19. data/fastlane/lib/fastlane/actions/docs/create_app_online.md +6 -3
  20. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +12 -8
  21. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +56 -17
  22. data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +13 -1
  23. data/fastlane/lib/fastlane/actions/get_version_number.rb +1 -1
  24. data/fastlane/lib/fastlane/actions/import_certificate.rb +9 -1
  25. data/fastlane/lib/fastlane/actions/import_from_git.rb +11 -4
  26. data/fastlane/lib/fastlane/actions/increment_build_number.rb +1 -1
  27. data/fastlane/lib/fastlane/actions/install_xcode_plugin.rb +3 -2
  28. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -2
  29. data/fastlane/lib/fastlane/actions/modify_services.rb +1 -0
  30. data/fastlane/lib/fastlane/actions/notarize.rb +4 -0
  31. data/fastlane/lib/fastlane/actions/onesignal.rb +1 -1
  32. data/fastlane/lib/fastlane/actions/register_device.rb +1 -1
  33. data/fastlane/lib/fastlane/actions/register_devices.rb +1 -1
  34. data/fastlane/lib/fastlane/actions/setup_ci.rb +14 -4
  35. data/fastlane/lib/fastlane/actions/testfairy.rb +41 -4
  36. data/fastlane/lib/fastlane/actions/unlock_keychain.rb +6 -1
  37. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +1 -1
  38. data/fastlane/lib/fastlane/actions/xcov.rb +1 -7
  39. data/fastlane/lib/fastlane/cli_tools_distributor.rb +9 -0
  40. data/fastlane/lib/fastlane/documentation/markdown_docs_generator.rb +4 -4
  41. data/fastlane/lib/fastlane/erb_template_helper.rb +1 -7
  42. data/fastlane/lib/fastlane/fast_file.rb +9 -6
  43. data/fastlane/lib/fastlane/helper/s3_client_helper.rb +4 -0
  44. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
  45. data/fastlane/lib/fastlane/plugins/template/.github/workflows/test.yml +20 -20
  46. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -1
  47. data/fastlane/lib/fastlane/version.rb +2 -1
  48. data/fastlane/swift/Actions.swift +1 -1
  49. data/fastlane/swift/Appfile.swift +13 -5
  50. data/fastlane/swift/ArgumentProcessor.swift +1 -1
  51. data/fastlane/swift/Atomic.swift +1 -1
  52. data/fastlane/swift/ControlCommand.swift +5 -4
  53. data/fastlane/swift/Deliverfile.swift +2 -2
  54. data/fastlane/swift/DeliverfileProtocol.swift +265 -68
  55. data/fastlane/swift/Fastlane.swift +187 -168
  56. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +3 -1
  57. data/fastlane/swift/Gymfile.swift +2 -2
  58. data/fastlane/swift/GymfileProtocol.swift +227 -54
  59. data/fastlane/swift/LaneFileProtocol.swift +7 -5
  60. data/fastlane/swift/MainProcess.swift +1 -1
  61. data/fastlane/swift/Matchfile.swift +2 -2
  62. data/fastlane/swift/MatchfileProtocol.swift +226 -59
  63. data/fastlane/swift/OptionalConfigValue.swift +1 -1
  64. data/fastlane/swift/Plugins.swift +1 -1
  65. data/fastlane/swift/Precheckfile.swift +2 -2
  66. data/fastlane/swift/PrecheckfileProtocol.swift +45 -13
  67. data/fastlane/swift/RubyCommand.swift +6 -7
  68. data/fastlane/swift/RubyCommandable.swift +1 -1
  69. data/fastlane/swift/Runner.swift +3 -3
  70. data/fastlane/swift/RunnerArgument.swift +1 -1
  71. data/fastlane/swift/Scanfile.swift +2 -2
  72. data/fastlane/swift/ScanfileProtocol.swift +334 -84
  73. data/fastlane/swift/Screengrabfile.swift +2 -2
  74. data/fastlane/swift/ScreengrabfileProtocol.swift +89 -24
  75. data/fastlane/swift/Snapshotfile.swift +2 -2
  76. data/fastlane/swift/SnapshotfileProtocol.swift +216 -53
  77. data/fastlane/swift/SocketClient.swift +7 -7
  78. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  79. data/fastlane/swift/SocketResponse.swift +1 -1
  80. data/fastlane/swift/formatting/Brewfile.lock.json +15 -25
  81. data/fastlane/swift/formatting/Rakefile +1 -2
  82. data/fastlane/swift/main.swift +1 -1
  83. data/fastlane_core/lib/assets/XMLTemplate.xml.erb +5 -1
  84. data/fastlane_core/lib/fastlane_core/cert_checker.rb +10 -0
  85. data/fastlane_core/lib/fastlane_core/command_executor.rb +3 -1
  86. data/fastlane_core/lib/fastlane_core/fastlane_pty.rb +5 -1
  87. data/fastlane_core/lib/fastlane_core/helper.rb +6 -1
  88. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +4 -14
  89. data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +19 -2
  90. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +143 -106
  91. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +3 -1
  92. data/fastlane_core/lib/fastlane_core/project.rb +8 -0
  93. data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +7 -1
  94. data/frameit/lib/frameit/device.rb +2 -2
  95. data/frameit/lib/frameit/device_types.rb +108 -70
  96. data/frameit/lib/frameit/template_finder.rb +1 -1
  97. data/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh +1 -0
  98. data/gym/lib/gym/module.rb +9 -4
  99. data/gym/lib/gym/options.rb +20 -2
  100. data/gym/lib/gym/runner.rb +38 -3
  101. data/match/lib/assets/READMETemplate.md +2 -2
  102. data/match/lib/match/generator.rb +2 -2
  103. data/match/lib/match/options.rb +1 -0
  104. data/match/lib/match/runner.rb +1 -1
  105. data/match/lib/match/storage/s3_storage.rb +4 -7
  106. data/pilot/lib/pilot/build_manager.rb +7 -1
  107. data/precheck/lib/precheck/options.rb +1 -1
  108. data/produce/lib/produce/commands_generator.rb +2 -0
  109. data/produce/lib/produce/developer_center.rb +1 -0
  110. data/produce/lib/produce/options.rb +1 -1
  111. data/produce/lib/produce/service.rb +6 -1
  112. data/scan/lib/scan/error_handler.rb +5 -0
  113. data/scan/lib/scan/options.rb +13 -3
  114. data/scan/lib/scan/test_command_generator.rb +10 -2
  115. data/sigh/lib/assets/resign.sh +7 -5
  116. data/sigh/lib/sigh/local_manage.rb +6 -4
  117. data/sigh/lib/sigh/options.rb +1 -0
  118. data/sigh/lib/sigh/runner.rb +23 -3
  119. data/snapshot/lib/snapshot/detect_values.rb +1 -1
  120. data/snapshot/lib/snapshot/options.rb +13 -1
  121. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +4 -2
  122. data/spaceship/lib/spaceship/client.rb +153 -22
  123. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +65 -9
  124. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +4 -4
  125. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +7 -1
  126. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +16 -16
  127. data/spaceship/lib/spaceship/connect_api/models/build_upload.rb +42 -0
  128. data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +2 -0
  129. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +33 -2
  130. data/spaceship/lib/spaceship/connect_api/models/device.rb +1 -2
  131. data/spaceship/lib/spaceship/connect_api/models/profile.rb +2 -3
  132. data/spaceship/lib/spaceship/connect_api/models/webhook.rb +62 -0
  133. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +0 -6
  134. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +9 -0
  135. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +38 -0
  136. data/spaceship/lib/spaceship/connect_api.rb +2 -0
  137. data/spaceship/lib/spaceship/errors.rb +23 -6
  138. data/spaceship/lib/spaceship/portal/key.rb +22 -3
  139. data/spaceship/lib/spaceship/portal/portal_client.rb +29 -2
  140. data/spaceship/lib/spaceship/spaceauth_runner.rb +5 -15
  141. data/supply/lib/supply/client.rb +18 -1
  142. data/supply/lib/supply/uploader.rb +22 -11
  143. data/trainer/lib/trainer/legacy_xcresult.rb +586 -0
  144. data/trainer/lib/trainer/options.rb +5 -0
  145. data/trainer/lib/trainer/plist_test_summary_parser.rb +84 -0
  146. data/trainer/lib/trainer/test_parser.rb +12 -293
  147. data/trainer/lib/trainer/xcresult/helper.rb +63 -0
  148. data/trainer/lib/trainer/xcresult/repetition.rb +39 -0
  149. data/trainer/lib/trainer/xcresult/test_case.rb +221 -0
  150. data/trainer/lib/trainer/xcresult/test_case_attributes.rb +49 -0
  151. data/trainer/lib/trainer/xcresult/test_plan.rb +91 -0
  152. data/trainer/lib/trainer/xcresult/test_suite.rb +134 -0
  153. data/trainer/lib/trainer/xcresult.rb +31 -388
  154. data/trainer/lib/trainer.rb +3 -1
  155. metadata +172 -33
  156. data/fastlane/lib/fastlane/actions/hipchat.rb +0 -200
  157. data/fastlane/lib/fastlane/core_ext/bundler_monkey_patch.rb +0 -14
  158. data/fastlane/lib/fastlane/plugins/template/.circleci/config.yml +0 -43
  159. data/fastlane/lib/fastlane/plugins/template/.travis.yml +0 -4
@@ -1,5 +1,5 @@
1
1
  // Fastlane.swift
2
- // Copyright (c) 2024 FastlaneTools
2
+ // Copyright (c) 2026 FastlaneTools
3
3
 
4
4
  import Foundation
5
5
 
@@ -135,7 +135,7 @@ public func addGitTag(tag: OptionalConfigValue<String?> = .fastlaneDefault(nil),
135
135
  - parameters:
136
136
  - 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)
137
137
  - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)
138
- - initialBuildNumber: sets the build number to given value if no build is in current train
138
+ - initialBuildNumber: sets the build number to given value if no build (upload) is in current train
139
139
  - appIdentifier: The bundle identifier of your app
140
140
  - username: Your Apple ID Username
141
141
  - teamId: The ID of your App Store Connect team if you're in multiple teams
@@ -1339,10 +1339,13 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1339
1339
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
1340
1340
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
1341
1341
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1342
+ - packageCachePath: Sets a custom package cache path for Swift Package Manager dependencies
1342
1343
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
1343
- - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
1344
+ - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file. This translates in the option `-disableAutomaticPackageResolution` being passed to xcodebuild
1345
+ - skipPackageRepositoryFetches: Skips updating package dependencies from their remote. This translates in the option `-skipPackageUpdates` being passed to xcodebuild
1344
1346
  - useSystemScm: Lets xcodebuild use system's scm configuration
1345
1347
  - packageAuthorizationProvider: Lets xcodebuild use a specified package authorization provider (keychain|netrc)
1348
+ - generateAppstoreInfo: Generate AppStoreInfo.plist using swinfo for app-store exports
1346
1349
 
1347
1350
  - returns: The absolute path to the generated ipa file
1348
1351
 
@@ -1395,10 +1398,13 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1395
1398
  skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1396
1399
  xcodebuildCommand: String = "xcodebuild",
1397
1400
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1401
+ packageCachePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1398
1402
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1399
1403
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1404
+ skipPackageRepositoryFetches: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1400
1405
  useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1401
- packageAuthorizationProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil)) -> String
1406
+ packageAuthorizationProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1407
+ generateAppstoreInfo: OptionalConfigValue<Bool> = .fastlaneDefault(false)) -> String
1402
1408
  {
1403
1409
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
1404
1410
  let projectArg = project.asRubyArgument(name: "project", type: nil)
@@ -1447,10 +1453,13 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1447
1453
  let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
1448
1454
  let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
1449
1455
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
1456
+ let packageCachePathArg = packageCachePath.asRubyArgument(name: "package_cache_path", type: nil)
1450
1457
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
1451
1458
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
1459
+ let skipPackageRepositoryFetchesArg = skipPackageRepositoryFetches.asRubyArgument(name: "skip_package_repository_fetches", type: nil)
1452
1460
  let useSystemScmArg = useSystemScm.asRubyArgument(name: "use_system_scm", type: nil)
1453
1461
  let packageAuthorizationProviderArg = packageAuthorizationProvider.asRubyArgument(name: "package_authorization_provider", type: nil)
1462
+ let generateAppstoreInfoArg = generateAppstoreInfo.asRubyArgument(name: "generate_appstore_info", type: nil)
1454
1463
  let array: [RubyCommand.Argument?] = [workspaceArg,
1455
1464
  projectArg,
1456
1465
  schemeArg,
@@ -1498,10 +1507,13 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1498
1507
  skipProfileDetectionArg,
1499
1508
  xcodebuildCommandArg,
1500
1509
  clonedSourcePackagesPathArg,
1510
+ packageCachePathArg,
1501
1511
  skipPackageDependenciesResolutionArg,
1502
1512
  disablePackageAutomaticUpdatesArg,
1513
+ skipPackageRepositoryFetchesArg,
1503
1514
  useSystemScmArg,
1504
- packageAuthorizationProviderArg]
1515
+ packageAuthorizationProviderArg,
1516
+ generateAppstoreInfoArg]
1505
1517
  let args: [RubyCommand.Argument] = array
1506
1518
  .filter { $0?.value != nil }
1507
1519
  .compactMap { $0 }
@@ -1557,10 +1569,13 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1557
1569
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
1558
1570
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
1559
1571
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1572
+ - packageCachePath: Sets a custom package cache path for Swift Package Manager dependencies
1560
1573
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
1561
- - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
1574
+ - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file. This translates in the option `-disableAutomaticPackageResolution` being passed to xcodebuild
1575
+ - skipPackageRepositoryFetches: Skips updating package dependencies from their remote. This translates in the option `-skipPackageUpdates` being passed to xcodebuild
1562
1576
  - useSystemScm: Lets xcodebuild use system's scm configuration
1563
1577
  - packageAuthorizationProvider: Lets xcodebuild use a specified package authorization provider (keychain|netrc)
1578
+ - generateAppstoreInfo: Generate AppStoreInfo.plist using swinfo for app-store exports
1564
1579
 
1565
1580
  - returns: The absolute path to the generated ipa file
1566
1581
 
@@ -1610,10 +1625,13 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1610
1625
  skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1611
1626
  xcodebuildCommand: String = "xcodebuild",
1612
1627
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1628
+ packageCachePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1613
1629
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1614
1630
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1631
+ skipPackageRepositoryFetches: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1615
1632
  useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1616
- packageAuthorizationProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil)) -> String
1633
+ packageAuthorizationProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1634
+ generateAppstoreInfo: OptionalConfigValue<Bool> = .fastlaneDefault(false)) -> String
1617
1635
  {
1618
1636
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
1619
1637
  let projectArg = project.asRubyArgument(name: "project", type: nil)
@@ -1659,10 +1677,13 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1659
1677
  let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
1660
1678
  let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
1661
1679
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
1680
+ let packageCachePathArg = packageCachePath.asRubyArgument(name: "package_cache_path", type: nil)
1662
1681
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
1663
1682
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
1683
+ let skipPackageRepositoryFetchesArg = skipPackageRepositoryFetches.asRubyArgument(name: "skip_package_repository_fetches", type: nil)
1664
1684
  let useSystemScmArg = useSystemScm.asRubyArgument(name: "use_system_scm", type: nil)
1665
1685
  let packageAuthorizationProviderArg = packageAuthorizationProvider.asRubyArgument(name: "package_authorization_provider", type: nil)
1686
+ let generateAppstoreInfoArg = generateAppstoreInfo.asRubyArgument(name: "generate_appstore_info", type: nil)
1666
1687
  let array: [RubyCommand.Argument?] = [workspaceArg,
1667
1688
  projectArg,
1668
1689
  schemeArg,
@@ -1707,10 +1728,13 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1707
1728
  skipProfileDetectionArg,
1708
1729
  xcodebuildCommandArg,
1709
1730
  clonedSourcePackagesPathArg,
1731
+ packageCachePathArg,
1710
1732
  skipPackageDependenciesResolutionArg,
1711
1733
  disablePackageAutomaticUpdatesArg,
1734
+ skipPackageRepositoryFetchesArg,
1712
1735
  useSystemScmArg,
1713
- packageAuthorizationProviderArg]
1736
+ packageAuthorizationProviderArg,
1737
+ generateAppstoreInfoArg]
1714
1738
  let args: [RubyCommand.Argument] = array
1715
1739
  .filter { $0?.value != nil }
1716
1740
  .compactMap { $0 }
@@ -1767,10 +1791,13 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1767
1791
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
1768
1792
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
1769
1793
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1794
+ - packageCachePath: Sets a custom package cache path for Swift Package Manager dependencies
1770
1795
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
1771
- - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
1796
+ - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file. This translates in the option `-disableAutomaticPackageResolution` being passed to xcodebuild
1797
+ - skipPackageRepositoryFetches: Skips updating package dependencies from their remote. This translates in the option `-skipPackageUpdates` being passed to xcodebuild
1772
1798
  - useSystemScm: Lets xcodebuild use system's scm configuration
1773
1799
  - packageAuthorizationProvider: Lets xcodebuild use a specified package authorization provider (keychain|netrc)
1800
+ - generateAppstoreInfo: Generate AppStoreInfo.plist using swinfo for app-store exports
1774
1801
 
1775
1802
  - returns: The absolute path to the generated ipa file
1776
1803
 
@@ -1821,10 +1848,13 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1821
1848
  skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1822
1849
  xcodebuildCommand: String = "xcodebuild",
1823
1850
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1851
+ packageCachePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1824
1852
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1825
1853
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1854
+ skipPackageRepositoryFetches: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1826
1855
  useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1827
- packageAuthorizationProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil)) -> String
1856
+ packageAuthorizationProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1857
+ generateAppstoreInfo: OptionalConfigValue<Bool> = .fastlaneDefault(false)) -> String
1828
1858
  {
1829
1859
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
1830
1860
  let projectArg = project.asRubyArgument(name: "project", type: nil)
@@ -1871,10 +1901,13 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1871
1901
  let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
1872
1902
  let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
1873
1903
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
1904
+ let packageCachePathArg = packageCachePath.asRubyArgument(name: "package_cache_path", type: nil)
1874
1905
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
1875
1906
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
1907
+ let skipPackageRepositoryFetchesArg = skipPackageRepositoryFetches.asRubyArgument(name: "skip_package_repository_fetches", type: nil)
1876
1908
  let useSystemScmArg = useSystemScm.asRubyArgument(name: "use_system_scm", type: nil)
1877
1909
  let packageAuthorizationProviderArg = packageAuthorizationProvider.asRubyArgument(name: "package_authorization_provider", type: nil)
1910
+ let generateAppstoreInfoArg = generateAppstoreInfo.asRubyArgument(name: "generate_appstore_info", type: nil)
1878
1911
  let array: [RubyCommand.Argument?] = [workspaceArg,
1879
1912
  projectArg,
1880
1913
  schemeArg,
@@ -1920,10 +1953,13 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1920
1953
  skipProfileDetectionArg,
1921
1954
  xcodebuildCommandArg,
1922
1955
  clonedSourcePackagesPathArg,
1956
+ packageCachePathArg,
1923
1957
  skipPackageDependenciesResolutionArg,
1924
1958
  disablePackageAutomaticUpdatesArg,
1959
+ skipPackageRepositoryFetchesArg,
1925
1960
  useSystemScmArg,
1926
- packageAuthorizationProviderArg]
1961
+ packageAuthorizationProviderArg,
1962
+ generateAppstoreInfoArg]
1927
1963
  let args: [RubyCommand.Argument] = array
1928
1964
  .filter { $0?.value != nil }
1929
1965
  .compactMap { $0 }
@@ -2168,8 +2204,10 @@ public func captureAndroidScreenshots(androidHome: OptionalConfigValue<String?>
2168
2204
  - concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
2169
2205
  - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
2170
2206
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
2207
+ - packageCachePath: Sets a custom package cache path for Swift Package Manager dependencies
2171
2208
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
2172
- - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
2209
+ - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file. This translates in the option `-disableAutomaticPackageResolution` being passed to xcodebuild
2210
+ - skipPackageRepositoryFetches: Skips updating package dependencies from their remote. This translates in the option `-skipPackageUpdates` being passed to xcodebuild
2173
2211
  - packageAuthorizationProvider: Lets xcodebuild use a specified package authorization provider (keychain|netrc)
2174
2212
  - testplan: The testplan associated with the scheme that should be used for testing
2175
2213
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
@@ -2219,8 +2257,10 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2219
2257
  concurrentSimulators: OptionalConfigValue<Bool> = .fastlaneDefault(true),
2220
2258
  disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2221
2259
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2260
+ packageCachePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2222
2261
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2223
2262
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2263
+ skipPackageRepositoryFetches: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2224
2264
  packageAuthorizationProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2225
2265
  testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2226
2266
  onlyTesting: Any? = nil,
@@ -2270,8 +2310,10 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2270
2310
  let concurrentSimulatorsArg = concurrentSimulators.asRubyArgument(name: "concurrent_simulators", type: nil)
2271
2311
  let disableSlideToTypeArg = disableSlideToType.asRubyArgument(name: "disable_slide_to_type", type: nil)
2272
2312
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
2313
+ let packageCachePathArg = packageCachePath.asRubyArgument(name: "package_cache_path", type: nil)
2273
2314
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
2274
2315
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
2316
+ let skipPackageRepositoryFetchesArg = skipPackageRepositoryFetches.asRubyArgument(name: "skip_package_repository_fetches", type: nil)
2275
2317
  let packageAuthorizationProviderArg = packageAuthorizationProvider.asRubyArgument(name: "package_authorization_provider", type: nil)
2276
2318
  let testplanArg = testplan.asRubyArgument(name: "testplan", type: nil)
2277
2319
  let onlyTestingArg = RubyCommand.Argument(name: "only_testing", value: onlyTesting, type: nil)
@@ -2320,8 +2362,10 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2320
2362
  concurrentSimulatorsArg,
2321
2363
  disableSlideToTypeArg,
2322
2364
  clonedSourcePackagesPathArg,
2365
+ packageCachePathArg,
2323
2366
  skipPackageDependenciesResolutionArg,
2324
2367
  disablePackageAutomaticUpdatesArg,
2368
+ skipPackageRepositoryFetchesArg,
2325
2369
  packageAuthorizationProviderArg,
2326
2370
  testplanArg,
2327
2371
  onlyTestingArg,
@@ -2381,8 +2425,10 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2381
2425
  - concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
2382
2426
  - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
2383
2427
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
2428
+ - packageCachePath: Sets a custom package cache path for Swift Package Manager dependencies
2384
2429
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
2385
- - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
2430
+ - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file. This translates in the option `-disableAutomaticPackageResolution` being passed to xcodebuild
2431
+ - skipPackageRepositoryFetches: Skips updating package dependencies from their remote. This translates in the option `-skipPackageUpdates` being passed to xcodebuild
2386
2432
  - packageAuthorizationProvider: Lets xcodebuild use a specified package authorization provider (keychain|netrc)
2387
2433
  - testplan: The testplan associated with the scheme that should be used for testing
2388
2434
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
@@ -2432,8 +2478,10 @@ public func captureScreenshots(workspace: OptionalConfigValue<String?> = .fastla
2432
2478
  concurrentSimulators: OptionalConfigValue<Bool> = .fastlaneDefault(true),
2433
2479
  disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2434
2480
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2481
+ packageCachePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2435
2482
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2436
2483
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2484
+ skipPackageRepositoryFetches: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2437
2485
  packageAuthorizationProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2438
2486
  testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2439
2487
  onlyTesting: Any? = nil,
@@ -2483,8 +2531,10 @@ public func captureScreenshots(workspace: OptionalConfigValue<String?> = .fastla
2483
2531
  let concurrentSimulatorsArg = concurrentSimulators.asRubyArgument(name: "concurrent_simulators", type: nil)
2484
2532
  let disableSlideToTypeArg = disableSlideToType.asRubyArgument(name: "disable_slide_to_type", type: nil)
2485
2533
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
2534
+ let packageCachePathArg = packageCachePath.asRubyArgument(name: "package_cache_path", type: nil)
2486
2535
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
2487
2536
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
2537
+ let skipPackageRepositoryFetchesArg = skipPackageRepositoryFetches.asRubyArgument(name: "skip_package_repository_fetches", type: nil)
2488
2538
  let packageAuthorizationProviderArg = packageAuthorizationProvider.asRubyArgument(name: "package_authorization_provider", type: nil)
2489
2539
  let testplanArg = testplan.asRubyArgument(name: "testplan", type: nil)
2490
2540
  let onlyTestingArg = RubyCommand.Argument(name: "only_testing", value: onlyTesting, type: nil)
@@ -2533,8 +2583,10 @@ public func captureScreenshots(workspace: OptionalConfigValue<String?> = .fastla
2533
2583
  concurrentSimulatorsArg,
2534
2584
  disableSlideToTypeArg,
2535
2585
  clonedSourcePackagesPathArg,
2586
+ packageCachePathArg,
2536
2587
  skipPackageDependenciesResolutionArg,
2537
2588
  disablePackageAutomaticUpdatesArg,
2589
+ skipPackageRepositoryFetchesArg,
2538
2590
  packageAuthorizationProviderArg,
2539
2591
  testplanArg,
2540
2592
  onlyTestingArg,
@@ -2690,7 +2742,7 @@ public func cert(development: OptionalConfigValue<Bool> = .fastlaneDefault(false
2690
2742
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2691
2743
  filename: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2692
2744
  outputPath: String = ".",
2693
- keychainPath: String,
2745
+ keychainPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2694
2746
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2695
2747
  skipSetPartitionList: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2696
2748
  platform: String = "ios")
@@ -2706,7 +2758,7 @@ public func cert(development: OptionalConfigValue<Bool> = .fastlaneDefault(false
2706
2758
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
2707
2759
  let filenameArg = filename.asRubyArgument(name: "filename", type: nil)
2708
2760
  let outputPathArg = RubyCommand.Argument(name: "output_path", value: outputPath, type: nil)
2709
- let keychainPathArg = RubyCommand.Argument(name: "keychain_path", value: keychainPath, type: nil)
2761
+ let keychainPathArg = keychainPath.asRubyArgument(name: "keychain_path", type: nil)
2710
2762
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
2711
2763
  let skipSetPartitionListArg = skipSetPartitionList.asRubyArgument(name: "skip_set_partition_list", type: nil)
2712
2764
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
@@ -3045,15 +3097,6 @@ public func cloc(binaryPath: String = "/usr/local/bin/cloc",
3045
3097
  _ = runner.executeCommand(command)
3046
3098
  }
3047
3099
 
3048
- /**
3049
- Print a Club Mate in your build output
3050
- */
3051
- public func clubmate() {
3052
- let args: [RubyCommand.Argument] = []
3053
- let command = RubyCommand(commandID: "", methodName: "clubmate", className: nil, args: args)
3054
- _ = runner.executeCommand(command)
3055
- }
3056
-
3057
3100
  /**
3058
3101
  Runs `pod install` for the project
3059
3102
 
@@ -3320,7 +3363,7 @@ public func createAppOnManagedPlayStore(jsonKey: OptionalConfigValue<String?> =
3320
3363
  - skipItc: Skip the creation of the app on App Store Connect
3321
3364
  - itcUsers: Array of App Store Connect users. If provided, you can limit access to this newly created app for users with the App Manager, Developer, Marketer or Sales roles
3322
3365
  - enabledFeatures: **DEPRECATED!** Please use `enable_services` instead - Array with Spaceship App Services
3323
- - enableServices: Array with Spaceship App Services (e.g. access_wifi: (on|off), app_attest: (on|off), app_group: (on|off), apple_pay: (on|off), associated_domains: (on|off), auto_fill_credential: (on|off), class_kit: (on|off), icloud: (legacy|cloudkit), custom_network_protocol: (on|off), data_protection: (complete|unlessopen|untilfirstauth), extended_virtual_address_space: (on|off), family_controls: (on|off), file_provider_testing_mode: (on|off), fonts: (on|off), game_center: (ios|mac), health_kit: (on|off), hls_interstitial_preview: (on|off), home_kit: (on|off), hotspot: (on|off), in_app_purchase: (on|off), inter_app_audio: (on|off), low_latency_hls: (on|off), managed_associated_domains: (on|off), maps: (on|off), multipath: (on|off), network_extension: (on|off), nfc_tag_reading: (on|off), personal_vpn: (on|off), passbook: (on|off), push_notification: (on|off), sign_in_with_apple: (on), siri_kit: (on|off), system_extension: (on|off), user_management: (on|off), vpn_configuration: (on|off), wallet: (on|off), wireless_accessory: (on|off), car_play_audio_app: (on|off), car_play_messaging_app: (on|off), car_play_navigation_app: (on|off), car_play_voip_calling_app: (on|off), critical_alerts: (on|off), hotspot_helper: (on|off), driver_kit: (on|off), driver_kit_endpoint_security: (on|off), driver_kit_family_hid_device: (on|off), driver_kit_family_networking: (on|off), driver_kit_family_serial: (on|off), driver_kit_hid_event_service: (on|off), driver_kit_transport_hid: (on|off), multitasking_camera_access: (on|off), sf_universal_link_api: (on|off), vp9_decoder: (on|off), music_kit: (on|off), shazam_kit: (on|off), communication_notifications: (on|off), group_activities: (on|off), health_kit_estimate_recalibration: (on|off), time_sensitive_notifications: (on|off))
3366
+ - enableServices: Array with Spaceship App Services (e.g. access_wifi: (on|off), app_attest: (on|off), app_group: (on|off), apple_pay: (on|off), associated_domains: (on|off), auto_fill_credential: (on|off), class_kit: (on|off), declared_age_range: (on|off), icloud: (legacy|cloudkit), custom_network_protocol: (on|off), data_protection: (complete|unlessopen|untilfirstauth), extended_virtual_address_space: (on|off), family_controls: (on|off), file_provider_testing_mode: (on|off), fonts: (on|off), game_center: (ios|mac), health_kit: (on|off), hls_interstitial_preview: (on|off), home_kit: (on|off), hotspot: (on|off), in_app_purchase: (on|off), inter_app_audio: (on|off), low_latency_hls: (on|off), managed_associated_domains: (on|off), maps: (on|off), multipath: (on|off), network_extension: (on|off), nfc_tag_reading: (on|off), personal_vpn: (on|off), passbook: (on|off), push_notification: (on|off), sign_in_with_apple: (on), siri_kit: (on|off), system_extension: (on|off), user_management: (on|off), vpn_configuration: (on|off), wallet: (on|off), wireless_accessory: (on|off), car_play_audio_app: (on|off), car_play_messaging_app: (on|off), car_play_navigation_app: (on|off), car_play_voip_calling_app: (on|off), critical_alerts: (on|off), hotspot_helper: (on|off), driver_kit: (on|off), driver_kit_endpoint_security: (on|off), driver_kit_family_hid_device: (on|off), driver_kit_family_networking: (on|off), driver_kit_family_serial: (on|off), driver_kit_hid_event_service: (on|off), driver_kit_transport_hid: (on|off), multitasking_camera_access: (on|off), sf_universal_link_api: (on|off), vp9_decoder: (on|off), music_kit: (on|off), shazam_kit: (on|off), communication_notifications: (on|off), group_activities: (on|off), health_kit_estimate_recalibration: (on|off), time_sensitive_notifications: (on|off))
3324
3367
  - skipDevcenter: Skip the creation of the app on the Apple Developer Portal
3325
3368
  - teamId: The ID of your Developer Portal team if you're in multiple teams
3326
3369
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -4842,7 +4885,7 @@ public func getCertificates(development: OptionalConfigValue<Bool> = .fastlaneDe
4842
4885
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4843
4886
  filename: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4844
4887
  outputPath: String = ".",
4845
- keychainPath: String,
4888
+ keychainPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4846
4889
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4847
4890
  skipSetPartitionList: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4848
4891
  platform: String = "ios")
@@ -4858,7 +4901,7 @@ public func getCertificates(development: OptionalConfigValue<Bool> = .fastlaneDe
4858
4901
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
4859
4902
  let filenameArg = filename.asRubyArgument(name: "filename", type: nil)
4860
4903
  let outputPathArg = RubyCommand.Argument(name: "output_path", value: outputPath, type: nil)
4861
- let keychainPathArg = RubyCommand.Argument(name: "keychain_path", value: keychainPath, type: nil)
4904
+ let keychainPathArg = keychainPath.asRubyArgument(name: "keychain_path", type: nil)
4862
4905
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
4863
4906
  let skipSetPartitionListArg = skipSetPartitionList.asRubyArgument(name: "skip_set_partition_list", type: nil)
4864
4907
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
@@ -5063,7 +5106,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
5063
5106
  - skipCertificateVerification: Skips the verification of the certificates for every existing profiles. This will make sure the provisioning profile can be used on the local machine
5064
5107
  - platform: Set the provisioning profile's platform (i.e. ios, tvos, macos, catalyst)
5065
5108
  - readonly: Only fetch existing profile, don't generate new ones
5066
- - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
5109
+ - templateName: **DEPRECATED!** Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities - The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
5067
5110
  - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
5068
5111
  - cachedCertificates: A list of cached certificates
5069
5112
  - cachedDevices: A list of cached devices
@@ -5713,10 +5756,13 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5713
5756
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
5714
5757
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
5715
5758
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
5759
+ - packageCachePath: Sets a custom package cache path for Swift Package Manager dependencies
5716
5760
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
5717
- - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
5761
+ - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file. This translates in the option `-disableAutomaticPackageResolution` being passed to xcodebuild
5762
+ - skipPackageRepositoryFetches: Skips updating package dependencies from their remote. This translates in the option `-skipPackageUpdates` being passed to xcodebuild
5718
5763
  - useSystemScm: Lets xcodebuild use system's scm configuration
5719
5764
  - packageAuthorizationProvider: Lets xcodebuild use a specified package authorization provider (keychain|netrc)
5765
+ - generateAppstoreInfo: Generate AppStoreInfo.plist using swinfo for app-store exports
5720
5766
 
5721
5767
  - returns: The absolute path to the generated ipa file
5722
5768
 
@@ -5769,10 +5815,13 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5769
5815
  skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.skipProfileDetection),
5770
5816
  xcodebuildCommand: String = gymfile.xcodebuildCommand,
5771
5817
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.clonedSourcePackagesPath),
5818
+ packageCachePath: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.packageCachePath),
5772
5819
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.skipPackageDependenciesResolution),
5773
5820
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.disablePackageAutomaticUpdates),
5821
+ skipPackageRepositoryFetches: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.skipPackageRepositoryFetches),
5774
5822
  useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.useSystemScm),
5775
- packageAuthorizationProvider: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.packageAuthorizationProvider)) -> String
5823
+ packageAuthorizationProvider: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.packageAuthorizationProvider),
5824
+ generateAppstoreInfo: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.generateAppstoreInfo)) -> String
5776
5825
  {
5777
5826
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
5778
5827
  let projectArg = project.asRubyArgument(name: "project", type: nil)
@@ -5821,10 +5870,13 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5821
5870
  let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
5822
5871
  let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
5823
5872
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
5873
+ let packageCachePathArg = packageCachePath.asRubyArgument(name: "package_cache_path", type: nil)
5824
5874
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
5825
5875
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
5876
+ let skipPackageRepositoryFetchesArg = skipPackageRepositoryFetches.asRubyArgument(name: "skip_package_repository_fetches", type: nil)
5826
5877
  let useSystemScmArg = useSystemScm.asRubyArgument(name: "use_system_scm", type: nil)
5827
5878
  let packageAuthorizationProviderArg = packageAuthorizationProvider.asRubyArgument(name: "package_authorization_provider", type: nil)
5879
+ let generateAppstoreInfoArg = generateAppstoreInfo.asRubyArgument(name: "generate_appstore_info", type: nil)
5828
5880
  let array: [RubyCommand.Argument?] = [workspaceArg,
5829
5881
  projectArg,
5830
5882
  schemeArg,
@@ -5872,10 +5924,13 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5872
5924
  skipProfileDetectionArg,
5873
5925
  xcodebuildCommandArg,
5874
5926
  clonedSourcePackagesPathArg,
5927
+ packageCachePathArg,
5875
5928
  skipPackageDependenciesResolutionArg,
5876
5929
  disablePackageAutomaticUpdatesArg,
5930
+ skipPackageRepositoryFetchesArg,
5877
5931
  useSystemScmArg,
5878
- packageAuthorizationProviderArg]
5932
+ packageAuthorizationProviderArg,
5933
+ generateAppstoreInfoArg]
5879
5934
  let args: [RubyCommand.Argument] = array
5880
5935
  .filter { $0?.value != nil }
5881
5936
  .compactMap { $0 }
@@ -5975,65 +6030,6 @@ public func hgPush(force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
5975
6030
  _ = runner.executeCommand(command)
5976
6031
  }
5977
6032
 
5978
- /**
5979
- Send a error/success message to [HipChat](https://www.hipchat.com/)
5980
-
5981
- - parameters:
5982
- - message: The message to post on HipChat
5983
- - channel: The room or @username
5984
- - apiToken: Hipchat API Token
5985
- - customColor: Specify a custom color, this overrides the success boolean. Can be one of 'yellow', 'red', 'green', 'purple', 'gray', or 'random'
5986
- - success: Was this build successful? (true/false)
5987
- - version: Version of the Hipchat API. Must be 1 or 2
5988
- - notifyRoom: Should the people in the room be notified? (true/false)
5989
- - apiHost: The host of the HipChat-Server API
5990
- - messageFormat: Format of the message to post. Must be either 'html' or 'text'
5991
- - includeHtmlHeader: Should html formatted messages include a preformatted header? (true/false)
5992
- - from: Name the message will appear to be sent from
5993
-
5994
- Send a message to **room** (by default) or a direct message to **@username** with success (green) or failure (red) status.
5995
- */
5996
- public func hipchat(message: String = "",
5997
- channel: String,
5998
- apiToken: String,
5999
- customColor: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6000
- success: OptionalConfigValue<Bool> = .fastlaneDefault(true),
6001
- version: String,
6002
- notifyRoom: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6003
- apiHost: String = "api.hipchat.com",
6004
- messageFormat: String = "html",
6005
- includeHtmlHeader: OptionalConfigValue<Bool> = .fastlaneDefault(true),
6006
- from: String = "fastlane")
6007
- {
6008
- let messageArg = RubyCommand.Argument(name: "message", value: message, type: nil)
6009
- let channelArg = RubyCommand.Argument(name: "channel", value: channel, type: nil)
6010
- let apiTokenArg = RubyCommand.Argument(name: "api_token", value: apiToken, type: nil)
6011
- let customColorArg = customColor.asRubyArgument(name: "custom_color", type: nil)
6012
- let successArg = success.asRubyArgument(name: "success", type: nil)
6013
- let versionArg = RubyCommand.Argument(name: "version", value: version, type: nil)
6014
- let notifyRoomArg = notifyRoom.asRubyArgument(name: "notify_room", type: nil)
6015
- let apiHostArg = RubyCommand.Argument(name: "api_host", value: apiHost, type: nil)
6016
- let messageFormatArg = RubyCommand.Argument(name: "message_format", value: messageFormat, type: nil)
6017
- let includeHtmlHeaderArg = includeHtmlHeader.asRubyArgument(name: "include_html_header", type: nil)
6018
- let fromArg = RubyCommand.Argument(name: "from", value: from, type: nil)
6019
- let array: [RubyCommand.Argument?] = [messageArg,
6020
- channelArg,
6021
- apiTokenArg,
6022
- customColorArg,
6023
- successArg,
6024
- versionArg,
6025
- notifyRoomArg,
6026
- apiHostArg,
6027
- messageFormatArg,
6028
- includeHtmlHeaderArg,
6029
- fromArg]
6030
- let args: [RubyCommand.Argument] = array
6031
- .filter { $0?.value != nil }
6032
- .compactMap { $0 }
6033
- let command = RubyCommand(commandID: "", methodName: "hipchat", className: nil, args: args)
6034
- _ = runner.executeCommand(command)
6035
- }
6036
-
6037
6033
  /**
6038
6034
  Refer to [App Center](https://github.com/Microsoft/fastlane-plugin-appcenter/)
6039
6035
 
@@ -6202,6 +6198,7 @@ public func ifttt(apiKey: String,
6202
6198
  - parameters:
6203
6199
  - certificatePath: Path to certificate
6204
6200
  - certificatePassword: Certificate password
6201
+ - certificateFormat: Format of the certificate. Check the '-f' switch from 'security import --help' command
6205
6202
  - keychainName: Keychain the items should be imported to
6206
6203
  - keychainPath: Path to the Keychain file to which the items should be imported
6207
6204
  - keychainPassword: The password for the keychain. Note that for the login keychain this is your user's password
@@ -6211,6 +6208,7 @@ public func ifttt(apiKey: String,
6211
6208
  */
6212
6209
  public func importCertificate(certificatePath: String,
6213
6210
  certificatePassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6211
+ certificateFormat: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6214
6212
  keychainName: String,
6215
6213
  keychainPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6216
6214
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -6218,12 +6216,14 @@ public func importCertificate(certificatePath: String,
6218
6216
  {
6219
6217
  let certificatePathArg = RubyCommand.Argument(name: "certificate_path", value: certificatePath, type: nil)
6220
6218
  let certificatePasswordArg = certificatePassword.asRubyArgument(name: "certificate_password", type: nil)
6219
+ let certificateFormatArg = certificateFormat.asRubyArgument(name: "certificate_format", type: nil)
6221
6220
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
6222
6221
  let keychainPathArg = keychainPath.asRubyArgument(name: "keychain_path", type: nil)
6223
6222
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
6224
6223
  let logOutputArg = logOutput.asRubyArgument(name: "log_output", type: nil)
6225
6224
  let array: [RubyCommand.Argument?] = [certificatePathArg,
6226
6225
  certificatePasswordArg,
6226
+ certificateFormatArg,
6227
6227
  keychainNameArg,
6228
6228
  keychainPathArg,
6229
6229
  keychainPasswordArg,
@@ -6589,7 +6589,7 @@ public func jazzy(config: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6589
6589
  - username: Your Apple ID Username
6590
6590
  - version: The version number whose latest build number we want
6591
6591
  - platform: The platform to use (optional)
6592
- - initialBuildNumber: sets the build number to given value if no build is in current train
6592
+ - initialBuildNumber: sets the build number to given value if no build (upload) is in current train
6593
6593
  - teamId: The ID of your App Store Connect team if you're in multiple teams
6594
6594
  - teamName: The name of your App Store Connect team if you're in multiple teams
6595
6595
 
@@ -6817,7 +6817,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
6817
6817
  - skipDocs: Skip generation of a README.md for the created git repository
6818
6818
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
6819
6819
  - 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
6820
- - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
6820
+ - templateName: **DEPRECATED!** Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities - The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
6821
6821
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
6822
6822
  - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
6823
6823
  - skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
@@ -7056,7 +7056,7 @@ public func match(type: String = matchfile.type,
7056
7056
  - skipDocs: Skip generation of a README.md for the created git repository
7057
7057
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
7058
7058
  - 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
7059
- - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
7059
+ - templateName: **DEPRECATED!** Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities - The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
7060
7060
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
7061
7061
  - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
7062
7062
  - skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
@@ -7265,7 +7265,7 @@ public func minFastlaneVersion() {
7265
7265
  - parameters:
7266
7266
  - username: Your Apple ID Username
7267
7267
  - appIdentifier: App Identifier (Bundle ID, e.g. com.krausefx.app)
7268
- - services: Array with Spaceship App Services (e.g. access_wifi: (on|off)(:on|:off)(true|false), app_attest: (on|off)(:on|:off)(true|false), app_group: (on|off)(:on|:off)(true|false), apple_pay: (on|off)(:on|:off)(true|false), associated_domains: (on|off)(:on|:off)(true|false), auto_fill_credential: (on|off)(:on|:off)(true|false), class_kit: (on|off)(:on|:off)(true|false), icloud: (legacy|cloudkit)(:on|:off)(true|false), custom_network_protocol: (on|off)(:on|:off)(true|false), data_protection: (complete|unlessopen|untilfirstauth)(:on|:off)(true|false), extended_virtual_address_space: (on|off)(:on|:off)(true|false), family_controls: (on|off)(:on|:off)(true|false), file_provider_testing_mode: (on|off)(:on|:off)(true|false), fonts: (on|off)(:on|:off)(true|false), game_center: (ios|mac)(:on|:off)(true|false), health_kit: (on|off)(:on|:off)(true|false), hls_interstitial_preview: (on|off)(:on|:off)(true|false), home_kit: (on|off)(:on|:off)(true|false), hotspot: (on|off)(:on|:off)(true|false), in_app_purchase: (on|off)(:on|:off)(true|false), inter_app_audio: (on|off)(:on|:off)(true|false), low_latency_hls: (on|off)(:on|:off)(true|false), managed_associated_domains: (on|off)(:on|:off)(true|false), maps: (on|off)(:on|:off)(true|false), multipath: (on|off)(:on|:off)(true|false), network_extension: (on|off)(:on|:off)(true|false), nfc_tag_reading: (on|off)(:on|:off)(true|false), personal_vpn: (on|off)(:on|:off)(true|false), passbook: (on|off)(:on|:off)(true|false), push_notification: (on|off)(:on|:off)(true|false), sign_in_with_apple: (on)(:on|:off)(true|false), siri_kit: (on|off)(:on|:off)(true|false), system_extension: (on|off)(:on|:off)(true|false), user_management: (on|off)(:on|:off)(true|false), vpn_configuration: (on|off)(:on|:off)(true|false), wallet: (on|off)(:on|:off)(true|false), wireless_accessory: (on|off)(:on|:off)(true|false), car_play_audio_app: (on|off)(:on|:off)(true|false), car_play_messaging_app: (on|off)(:on|:off)(true|false), car_play_navigation_app: (on|off)(:on|:off)(true|false), car_play_voip_calling_app: (on|off)(:on|:off)(true|false), critical_alerts: (on|off)(:on|:off)(true|false), hotspot_helper: (on|off)(:on|:off)(true|false), driver_kit: (on|off)(:on|:off)(true|false), driver_kit_endpoint_security: (on|off)(:on|:off)(true|false), driver_kit_family_hid_device: (on|off)(:on|:off)(true|false), driver_kit_family_networking: (on|off)(:on|:off)(true|false), driver_kit_family_serial: (on|off)(:on|:off)(true|false), driver_kit_hid_event_service: (on|off)(:on|:off)(true|false), driver_kit_transport_hid: (on|off)(:on|:off)(true|false), multitasking_camera_access: (on|off)(:on|:off)(true|false), sf_universal_link_api: (on|off)(:on|:off)(true|false), vp9_decoder: (on|off)(:on|:off)(true|false), music_kit: (on|off)(:on|:off)(true|false), shazam_kit: (on|off)(:on|:off)(true|false), communication_notifications: (on|off)(:on|:off)(true|false), group_activities: (on|off)(:on|:off)(true|false), health_kit_estimate_recalibration: (on|off)(:on|:off)(true|false), time_sensitive_notifications: (on|off)(:on|:off)(true|false))
7268
+ - services: Array with Spaceship App Services (e.g. access_wifi: (on|off)(:on|:off)(true|false), app_attest: (on|off)(:on|:off)(true|false), app_group: (on|off)(:on|:off)(true|false), apple_pay: (on|off)(:on|:off)(true|false), associated_domains: (on|off)(:on|:off)(true|false), auto_fill_credential: (on|off)(:on|:off)(true|false), class_kit: (on|off)(:on|:off)(true|false), declared_age_range: (on|off)(:on|:off)(true|false), icloud: (legacy|cloudkit)(:on|:off)(true|false), custom_network_protocol: (on|off)(:on|:off)(true|false), data_protection: (complete|unlessopen|untilfirstauth)(:on|:off)(true|false), extended_virtual_address_space: (on|off)(:on|:off)(true|false), family_controls: (on|off)(:on|:off)(true|false), file_provider_testing_mode: (on|off)(:on|:off)(true|false), fonts: (on|off)(:on|:off)(true|false), game_center: (ios|mac)(:on|:off)(true|false), health_kit: (on|off)(:on|:off)(true|false), hls_interstitial_preview: (on|off)(:on|:off)(true|false), home_kit: (on|off)(:on|:off)(true|false), hotspot: (on|off)(:on|:off)(true|false), in_app_purchase: (on|off)(:on|:off)(true|false), inter_app_audio: (on|off)(:on|:off)(true|false), low_latency_hls: (on|off)(:on|:off)(true|false), managed_associated_domains: (on|off)(:on|:off)(true|false), maps: (on|off)(:on|:off)(true|false), multipath: (on|off)(:on|:off)(true|false), network_extension: (on|off)(:on|:off)(true|false), nfc_tag_reading: (on|off)(:on|:off)(true|false), personal_vpn: (on|off)(:on|:off)(true|false), passbook: (on|off)(:on|:off)(true|false), push_notification: (on|off)(:on|:off)(true|false), sign_in_with_apple: (on)(:on|:off)(true|false), siri_kit: (on|off)(:on|:off)(true|false), system_extension: (on|off)(:on|:off)(true|false), user_management: (on|off)(:on|:off)(true|false), vpn_configuration: (on|off)(:on|:off)(true|false), wallet: (on|off)(:on|:off)(true|false), wireless_accessory: (on|off)(:on|:off)(true|false), car_play_audio_app: (on|off)(:on|:off)(true|false), car_play_messaging_app: (on|off)(:on|:off)(true|false), car_play_navigation_app: (on|off)(:on|:off)(true|false), car_play_voip_calling_app: (on|off)(:on|:off)(true|false), critical_alerts: (on|off)(:on|:off)(true|false), hotspot_helper: (on|off)(:on|:off)(true|false), driver_kit: (on|off)(:on|:off)(true|false), driver_kit_endpoint_security: (on|off)(:on|:off)(true|false), driver_kit_family_hid_device: (on|off)(:on|:off)(true|false), driver_kit_family_networking: (on|off)(:on|:off)(true|false), driver_kit_family_serial: (on|off)(:on|:off)(true|false), driver_kit_hid_event_service: (on|off)(:on|:off)(true|false), driver_kit_transport_hid: (on|off)(:on|:off)(true|false), multitasking_camera_access: (on|off)(:on|:off)(true|false), sf_universal_link_api: (on|off)(:on|:off)(true|false), vp9_decoder: (on|off)(:on|:off)(true|false), music_kit: (on|off)(:on|:off)(true|false), shazam_kit: (on|off)(:on|:off)(true|false), communication_notifications: (on|off)(:on|:off)(true|false), group_activities: (on|off)(:on|:off)(true|false), health_kit_estimate_recalibration: (on|off)(:on|:off)(true|false), time_sensitive_notifications: (on|off)(:on|:off)(true|false))
7269
7269
  - teamId: The ID of your Developer Portal team if you're in multiple teams
7270
7270
  - teamName: The name of your Developer Portal team if you're in multiple teams
7271
7271
 
@@ -8267,7 +8267,7 @@ public func println(message: OptionalConfigValue<String?> = .fastlaneDefault(nil
8267
8267
  - skipItc: Skip the creation of the app on App Store Connect
8268
8268
  - itcUsers: Array of App Store Connect users. If provided, you can limit access to this newly created app for users with the App Manager, Developer, Marketer or Sales roles
8269
8269
  - enabledFeatures: **DEPRECATED!** Please use `enable_services` instead - Array with Spaceship App Services
8270
- - enableServices: Array with Spaceship App Services (e.g. access_wifi: (on|off), app_attest: (on|off), app_group: (on|off), apple_pay: (on|off), associated_domains: (on|off), auto_fill_credential: (on|off), class_kit: (on|off), icloud: (legacy|cloudkit), custom_network_protocol: (on|off), data_protection: (complete|unlessopen|untilfirstauth), extended_virtual_address_space: (on|off), family_controls: (on|off), file_provider_testing_mode: (on|off), fonts: (on|off), game_center: (ios|mac), health_kit: (on|off), hls_interstitial_preview: (on|off), home_kit: (on|off), hotspot: (on|off), in_app_purchase: (on|off), inter_app_audio: (on|off), low_latency_hls: (on|off), managed_associated_domains: (on|off), maps: (on|off), multipath: (on|off), network_extension: (on|off), nfc_tag_reading: (on|off), personal_vpn: (on|off), passbook: (on|off), push_notification: (on|off), sign_in_with_apple: (on), siri_kit: (on|off), system_extension: (on|off), user_management: (on|off), vpn_configuration: (on|off), wallet: (on|off), wireless_accessory: (on|off), car_play_audio_app: (on|off), car_play_messaging_app: (on|off), car_play_navigation_app: (on|off), car_play_voip_calling_app: (on|off), critical_alerts: (on|off), hotspot_helper: (on|off), driver_kit: (on|off), driver_kit_endpoint_security: (on|off), driver_kit_family_hid_device: (on|off), driver_kit_family_networking: (on|off), driver_kit_family_serial: (on|off), driver_kit_hid_event_service: (on|off), driver_kit_transport_hid: (on|off), multitasking_camera_access: (on|off), sf_universal_link_api: (on|off), vp9_decoder: (on|off), music_kit: (on|off), shazam_kit: (on|off), communication_notifications: (on|off), group_activities: (on|off), health_kit_estimate_recalibration: (on|off), time_sensitive_notifications: (on|off))
8270
+ - enableServices: Array with Spaceship App Services (e.g. access_wifi: (on|off), app_attest: (on|off), app_group: (on|off), apple_pay: (on|off), associated_domains: (on|off), auto_fill_credential: (on|off), class_kit: (on|off), declared_age_range: (on|off), icloud: (legacy|cloudkit), custom_network_protocol: (on|off), data_protection: (complete|unlessopen|untilfirstauth), extended_virtual_address_space: (on|off), family_controls: (on|off), file_provider_testing_mode: (on|off), fonts: (on|off), game_center: (ios|mac), health_kit: (on|off), hls_interstitial_preview: (on|off), home_kit: (on|off), hotspot: (on|off), in_app_purchase: (on|off), inter_app_audio: (on|off), low_latency_hls: (on|off), managed_associated_domains: (on|off), maps: (on|off), multipath: (on|off), network_extension: (on|off), nfc_tag_reading: (on|off), personal_vpn: (on|off), passbook: (on|off), push_notification: (on|off), sign_in_with_apple: (on), siri_kit: (on|off), system_extension: (on|off), user_management: (on|off), vpn_configuration: (on|off), wallet: (on|off), wireless_accessory: (on|off), car_play_audio_app: (on|off), car_play_messaging_app: (on|off), car_play_navigation_app: (on|off), car_play_voip_calling_app: (on|off), critical_alerts: (on|off), hotspot_helper: (on|off), driver_kit: (on|off), driver_kit_endpoint_security: (on|off), driver_kit_family_hid_device: (on|off), driver_kit_family_networking: (on|off), driver_kit_family_serial: (on|off), driver_kit_hid_event_service: (on|off), driver_kit_transport_hid: (on|off), multitasking_camera_access: (on|off), sf_universal_link_api: (on|off), vp9_decoder: (on|off), music_kit: (on|off), shazam_kit: (on|off), communication_notifications: (on|off), group_activities: (on|off), health_kit_estimate_recalibration: (on|off), time_sensitive_notifications: (on|off))
8271
8271
  - skipDevcenter: Skip the creation of the app on the Apple Developer Portal
8272
8272
  - teamId: The ID of your Developer Portal team if you're in multiple teams
8273
8273
  - teamName: The name of your Developer Portal team if you're in multiple teams
@@ -8826,8 +8826,8 @@ public func rubyVersion() {
8826
8826
  - prelaunchSimulator: Enabling this option will launch the first simulator prior to calling any xcodebuild command
8827
8827
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
8828
8828
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
8829
- - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
8830
- - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
8829
+ - onlyTesting: Array of test identifiers to run. Expected format: TestTarget[/TestSuite[/TestCase]]
8830
+ - skipTesting: Array of test identifiers to skip. Expected format: TestTarget[/TestSuite[/TestCase]]
8831
8831
  - testplan: The testplan associated with the scheme that should be used for testing
8832
8832
  - onlyTestConfigurations: Array of strings matching test plan configurations to run
8833
8833
  - skipTestConfigurations: Array of strings matching test plan configurations to skip
@@ -8885,8 +8885,10 @@ public func rubyVersion() {
8885
8885
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
8886
8886
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
8887
8887
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
8888
+ - packageCachePath: Sets a custom package cache path for Swift Package Manager dependencies
8888
8889
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
8889
- - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
8890
+ - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file. This translates in the option `-disableAutomaticPackageResolution` being passed to xcodebuild
8891
+ - skipPackageRepositoryFetches: Skips updating package dependencies from their remote. This translates in the option `-skipPackageUpdates` being passed to xcodebuild
8890
8892
  - useSystemScm: Lets xcodebuild use system's scm configuration
8891
8893
  - numberOfRetries: The number of times a test can fail
8892
8894
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
@@ -8969,8 +8971,10 @@ public func rubyVersion() {
8969
8971
  customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8970
8972
  xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
8971
8973
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8974
+ packageCachePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8972
8975
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8973
8976
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8977
+ skipPackageRepositoryFetches: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8974
8978
  useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8975
8979
  numberOfRetries: Int = 0,
8976
8980
  failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(true),
@@ -9049,8 +9053,10 @@ public func rubyVersion() {
9049
9053
  let customReportFileNameArg = customReportFileName.asRubyArgument(name: "custom_report_file_name", type: nil)
9050
9054
  let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
9051
9055
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
9056
+ let packageCachePathArg = packageCachePath.asRubyArgument(name: "package_cache_path", type: nil)
9052
9057
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
9053
9058
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
9059
+ let skipPackageRepositoryFetchesArg = skipPackageRepositoryFetches.asRubyArgument(name: "skip_package_repository_fetches", type: nil)
9054
9060
  let useSystemScmArg = useSystemScm.asRubyArgument(name: "use_system_scm", type: nil)
9055
9061
  let numberOfRetriesArg = RubyCommand.Argument(name: "number_of_retries", value: numberOfRetries, type: nil)
9056
9062
  let failBuildArg = failBuild.asRubyArgument(name: "fail_build", type: nil)
@@ -9128,8 +9134,10 @@ public func rubyVersion() {
9128
9134
  customReportFileNameArg,
9129
9135
  xcodebuildCommandArg,
9130
9136
  clonedSourcePackagesPathArg,
9137
+ packageCachePathArg,
9131
9138
  skipPackageDependenciesResolutionArg,
9132
9139
  disablePackageAutomaticUpdatesArg,
9140
+ skipPackageRepositoryFetchesArg,
9133
9141
  useSystemScmArg,
9134
9142
  numberOfRetriesArg,
9135
9143
  failBuildArg,
@@ -9261,8 +9269,8 @@ public func say(text: [String],
9261
9269
  - prelaunchSimulator: Enabling this option will launch the first simulator prior to calling any xcodebuild command
9262
9270
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
9263
9271
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
9264
- - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
9265
- - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
9272
+ - onlyTesting: Array of test identifiers to run. Expected format: TestTarget[/TestSuite[/TestCase]]
9273
+ - skipTesting: Array of test identifiers to skip. Expected format: TestTarget[/TestSuite[/TestCase]]
9266
9274
  - testplan: The testplan associated with the scheme that should be used for testing
9267
9275
  - onlyTestConfigurations: Array of strings matching test plan configurations to run
9268
9276
  - skipTestConfigurations: Array of strings matching test plan configurations to skip
@@ -9320,8 +9328,10 @@ public func say(text: [String],
9320
9328
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
9321
9329
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
9322
9330
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
9331
+ - packageCachePath: Sets a custom package cache path for Swift Package Manager dependencies
9323
9332
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
9324
- - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
9333
+ - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file. This translates in the option `-disableAutomaticPackageResolution` being passed to xcodebuild
9334
+ - skipPackageRepositoryFetches: Skips updating package dependencies from their remote. This translates in the option `-skipPackageUpdates` being passed to xcodebuild
9325
9335
  - useSystemScm: Lets xcodebuild use system's scm configuration
9326
9336
  - numberOfRetries: The number of times a test can fail
9327
9337
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
@@ -9404,8 +9414,10 @@ public func say(text: [String],
9404
9414
  customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.customReportFileName),
9405
9415
  xcodebuildCommand: String = scanfile.xcodebuildCommand,
9406
9416
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.clonedSourcePackagesPath),
9417
+ packageCachePath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.packageCachePath),
9407
9418
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipPackageDependenciesResolution),
9408
9419
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disablePackageAutomaticUpdates),
9420
+ skipPackageRepositoryFetches: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipPackageRepositoryFetches),
9409
9421
  useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useSystemScm),
9410
9422
  numberOfRetries: Int = scanfile.numberOfRetries,
9411
9423
  failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.failBuild),
@@ -9484,8 +9496,10 @@ public func say(text: [String],
9484
9496
  let customReportFileNameArg = customReportFileName.asRubyArgument(name: "custom_report_file_name", type: nil)
9485
9497
  let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
9486
9498
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
9499
+ let packageCachePathArg = packageCachePath.asRubyArgument(name: "package_cache_path", type: nil)
9487
9500
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
9488
9501
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
9502
+ let skipPackageRepositoryFetchesArg = skipPackageRepositoryFetches.asRubyArgument(name: "skip_package_repository_fetches", type: nil)
9489
9503
  let useSystemScmArg = useSystemScm.asRubyArgument(name: "use_system_scm", type: nil)
9490
9504
  let numberOfRetriesArg = RubyCommand.Argument(name: "number_of_retries", value: numberOfRetries, type: nil)
9491
9505
  let failBuildArg = failBuild.asRubyArgument(name: "fail_build", type: nil)
@@ -9563,8 +9577,10 @@ public func say(text: [String],
9563
9577
  customReportFileNameArg,
9564
9578
  xcodebuildCommandArg,
9565
9579
  clonedSourcePackagesPathArg,
9580
+ packageCachePathArg,
9566
9581
  skipPackageDependenciesResolutionArg,
9567
9582
  disablePackageAutomaticUpdatesArg,
9583
+ skipPackageRepositoryFetchesArg,
9568
9584
  useSystemScmArg,
9569
9585
  numberOfRetriesArg,
9570
9586
  failBuildArg,
@@ -9931,6 +9947,7 @@ public func setPodKey(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefaul
9931
9947
  - force: Force setup, even if not executed by CI
9932
9948
  - provider: CI provider. If none is set, the provider is detected automatically
9933
9949
  - timeout: Set a custom timeout in seconds for keychain. Set `0` if you want to specify 'no time-out'
9950
+ - keychainName: Set a custom keychain name
9934
9951
 
9935
9952
  - Creates a new temporary keychain for use with match|
9936
9953
  - Switches match to `readonly` mode to not create new profiles/cert on CI|
@@ -9940,14 +9957,17 @@ public func setPodKey(useBundleExec: OptionalConfigValue<Bool> = .fastlaneDefaul
9940
9957
  */
9941
9958
  public func setupCi(force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
9942
9959
  provider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9943
- timeout: Int = 3600)
9960
+ timeout: Int = 3600,
9961
+ keychainName: String = "fastlane_tmp_keychain")
9944
9962
  {
9945
9963
  let forceArg = force.asRubyArgument(name: "force", type: nil)
9946
9964
  let providerArg = provider.asRubyArgument(name: "provider", type: nil)
9947
9965
  let timeoutArg = RubyCommand.Argument(name: "timeout", value: timeout, type: nil)
9966
+ let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
9948
9967
  let array: [RubyCommand.Argument?] = [forceArg,
9949
9968
  providerArg,
9950
- timeoutArg]
9969
+ timeoutArg,
9970
+ keychainNameArg]
9951
9971
  let args: [RubyCommand.Argument] = array
9952
9972
  .filter { $0?.value != nil }
9953
9973
  .compactMap { $0 }
@@ -10122,7 +10142,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
10122
10142
  - skipCertificateVerification: Skips the verification of the certificates for every existing profiles. This will make sure the provisioning profile can be used on the local machine
10123
10143
  - platform: Set the provisioning profile's platform (i.e. ios, tvos, macos, catalyst)
10124
10144
  - readonly: Only fetch existing profile, don't generate new ones
10125
- - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
10145
+ - templateName: **DEPRECATED!** Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities - The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
10126
10146
  - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
10127
10147
  - cachedCertificates: A list of cached certificates
10128
10148
  - cachedDevices: A list of cached devices
@@ -10310,55 +10330,6 @@ public func slack(message: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10310
10330
  _ = runner.executeCommand(command)
10311
10331
  }
10312
10332
 
10313
- /**
10314
- Show a train of the fastlane progress
10315
-
10316
- - returns: A string that is being sent to slack
10317
- */
10318
- public func slackTrain() {
10319
- let args: [RubyCommand.Argument] = []
10320
- let command = RubyCommand(commandID: "", methodName: "slack_train", className: nil, args: args)
10321
- _ = runner.executeCommand(command)
10322
- }
10323
-
10324
- /**
10325
-
10326
- */
10327
- public func slackTrainCrash() {
10328
- let args: [RubyCommand.Argument] = []
10329
- let command = RubyCommand(commandID: "", methodName: "slack_train_crash", className: nil, args: args)
10330
- _ = runner.executeCommand(command)
10331
- }
10332
-
10333
- /**
10334
- Show a train of the fastlane progress
10335
-
10336
- - parameters:
10337
- - distance: How many rails do we need?
10338
- - train: Train emoji
10339
- - rail: Character or emoji for the rail
10340
- - reverseDirection: Pass true if you want the train to go from left to right
10341
- */
10342
- public func slackTrainStart(distance: Int = 5,
10343
- train: String = "🚝",
10344
- rail: String = "=",
10345
- reverseDirection: OptionalConfigValue<Bool> = .fastlaneDefault(false))
10346
- {
10347
- let distanceArg = RubyCommand.Argument(name: "distance", value: distance, type: nil)
10348
- let trainArg = RubyCommand.Argument(name: "train", value: train, type: nil)
10349
- let railArg = RubyCommand.Argument(name: "rail", value: rail, type: nil)
10350
- let reverseDirectionArg = reverseDirection.asRubyArgument(name: "reverse_direction", type: nil)
10351
- let array: [RubyCommand.Argument?] = [distanceArg,
10352
- trainArg,
10353
- railArg,
10354
- reverseDirectionArg]
10355
- let args: [RubyCommand.Argument] = array
10356
- .filter { $0?.value != nil }
10357
- .compactMap { $0 }
10358
- let command = RubyCommand(commandID: "", methodName: "slack_train_start", className: nil, args: args)
10359
- _ = runner.executeCommand(command)
10360
- }
10361
-
10362
10333
  /**
10363
10334
  Use slather to generate a code coverage report
10364
10335
 
@@ -10550,8 +10521,10 @@ public func slather(buildDirectory: OptionalConfigValue<String?> = .fastlaneDefa
10550
10521
  - concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
10551
10522
  - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
10552
10523
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
10524
+ - packageCachePath: Sets a custom package cache path for Swift Package Manager dependencies
10553
10525
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
10554
- - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
10526
+ - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file. This translates in the option `-disableAutomaticPackageResolution` being passed to xcodebuild
10527
+ - skipPackageRepositoryFetches: Skips updating package dependencies from their remote. This translates in the option `-skipPackageUpdates` being passed to xcodebuild
10555
10528
  - packageAuthorizationProvider: Lets xcodebuild use a specified package authorization provider (keychain|netrc)
10556
10529
  - testplan: The testplan associated with the scheme that should be used for testing
10557
10530
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
@@ -10601,8 +10574,10 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10601
10574
  concurrentSimulators: OptionalConfigValue<Bool> = .fastlaneDefault(snapshotfile.concurrentSimulators),
10602
10575
  disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(snapshotfile.disableSlideToType),
10603
10576
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.clonedSourcePackagesPath),
10577
+ packageCachePath: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.packageCachePath),
10604
10578
  skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(snapshotfile.skipPackageDependenciesResolution),
10605
10579
  disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(snapshotfile.disablePackageAutomaticUpdates),
10580
+ skipPackageRepositoryFetches: OptionalConfigValue<Bool> = .fastlaneDefault(snapshotfile.skipPackageRepositoryFetches),
10606
10581
  packageAuthorizationProvider: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.packageAuthorizationProvider),
10607
10582
  testplan: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.testplan),
10608
10583
  onlyTesting: Any? = snapshotfile.onlyTesting,
@@ -10652,8 +10627,10 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10652
10627
  let concurrentSimulatorsArg = concurrentSimulators.asRubyArgument(name: "concurrent_simulators", type: nil)
10653
10628
  let disableSlideToTypeArg = disableSlideToType.asRubyArgument(name: "disable_slide_to_type", type: nil)
10654
10629
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
10630
+ let packageCachePathArg = packageCachePath.asRubyArgument(name: "package_cache_path", type: nil)
10655
10631
  let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
10656
10632
  let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
10633
+ let skipPackageRepositoryFetchesArg = skipPackageRepositoryFetches.asRubyArgument(name: "skip_package_repository_fetches", type: nil)
10657
10634
  let packageAuthorizationProviderArg = packageAuthorizationProvider.asRubyArgument(name: "package_authorization_provider", type: nil)
10658
10635
  let testplanArg = testplan.asRubyArgument(name: "testplan", type: nil)
10659
10636
  let onlyTestingArg = RubyCommand.Argument(name: "only_testing", value: onlyTesting, type: nil)
@@ -10702,8 +10679,10 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
10702
10679
  concurrentSimulatorsArg,
10703
10680
  disableSlideToTypeArg,
10704
10681
  clonedSourcePackagesPathArg,
10682
+ packageCachePathArg,
10705
10683
  skipPackageDependenciesResolutionArg,
10706
10684
  disablePackageAutomaticUpdatesArg,
10685
+ skipPackageRepositoryFetchesArg,
10707
10686
  packageAuthorizationProviderArg,
10708
10687
  testplanArg,
10709
10688
  onlyTestingArg,
@@ -11382,7 +11361,7 @@ public func swiftlint(mode: String = "lint",
11382
11361
  - skipDocs: Skip generation of a README.md for the created git repository
11383
11362
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
11384
11363
  - 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
11385
- - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
11364
+ - templateName: **DEPRECATED!** Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities - The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
11386
11365
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
11387
11366
  - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
11388
11367
  - skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
@@ -11588,7 +11567,7 @@ public func teamName() {
11588
11567
  }
11589
11568
 
11590
11569
  /**
11591
- Upload a new build to [TestFairy](https://www.testfairy.com/)
11570
+ Upload a new build to SauceLabs' TestFairy
11592
11571
 
11593
11572
  - parameters:
11594
11573
  - apiKey: API Key for TestFairy
@@ -11602,11 +11581,17 @@ public func teamName() {
11602
11581
  - autoUpdate: Allows an easy upgrade of all users to the current version. To enable set to 'on'
11603
11582
  - notify: Send email to testers
11604
11583
  - options: Array of options (shake,video_only_wifi,anonymous)
11605
- - custom: Array of custom options. Contact support@testfairy.com for more information
11584
+ - custom: Array of custom options. Contact support for more information
11606
11585
  - timeout: Request timeout in seconds
11607
11586
  - tags: Custom tags that can be used to organize your builds
11587
+ - folderName: Name of the dashboard folder that contains this app
11588
+ - landingPageMode: Visibility of build landing after upload. Can be 'open' or 'closed'
11589
+ - uploadToSaucelabs: Upload file directly to Sauce Labs. It can be 'on' or 'off'
11590
+ - platform: Use if upload build is not iOS or Android. Contact support for more information
11591
+
11592
+ Upload a new build to [TestFairy](https://saucelabs.com/products/mobile-testing/app-betas).
11593
+ You can retrieve your API key on [your settings page](https://app.testfairy.com/settings/access-key)
11608
11594
 
11609
- You can retrieve your API key on [your settings page](https://free.testfairy.com/settings/)
11610
11595
  */
11611
11596
  public func testfairy(apiKey: String,
11612
11597
  ipa: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -11621,7 +11606,11 @@ public func testfairy(apiKey: String,
11621
11606
  options: [String] = [],
11622
11607
  custom: String = "",
11623
11608
  timeout: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
11624
- tags: [String] = [])
11609
+ tags: [String] = [],
11610
+ folderName: String = "",
11611
+ landingPageMode: String = "open",
11612
+ uploadToSaucelabs: String = "off",
11613
+ platform: String = "")
11625
11614
  {
11626
11615
  let apiKeyArg = RubyCommand.Argument(name: "api_key", value: apiKey, type: nil)
11627
11616
  let ipaArg = ipa.asRubyArgument(name: "ipa", type: nil)
@@ -11637,6 +11626,10 @@ public func testfairy(apiKey: String,
11637
11626
  let customArg = RubyCommand.Argument(name: "custom", value: custom, type: nil)
11638
11627
  let timeoutArg = timeout.asRubyArgument(name: "timeout", type: nil)
11639
11628
  let tagsArg = RubyCommand.Argument(name: "tags", value: tags, type: nil)
11629
+ let folderNameArg = RubyCommand.Argument(name: "folder_name", value: folderName, type: nil)
11630
+ let landingPageModeArg = RubyCommand.Argument(name: "landing_page_mode", value: landingPageMode, type: nil)
11631
+ let uploadToSaucelabsArg = RubyCommand.Argument(name: "upload_to_saucelabs", value: uploadToSaucelabs, type: nil)
11632
+ let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
11640
11633
  let array: [RubyCommand.Argument?] = [apiKeyArg,
11641
11634
  ipaArg,
11642
11635
  apkArg,
@@ -11650,7 +11643,11 @@ public func testfairy(apiKey: String,
11650
11643
  optionsArg,
11651
11644
  customArg,
11652
11645
  timeoutArg,
11653
- tagsArg]
11646
+ tagsArg,
11647
+ folderNameArg,
11648
+ landingPageModeArg,
11649
+ uploadToSaucelabsArg,
11650
+ platformArg]
11654
11651
  let args: [RubyCommand.Argument] = array
11655
11652
  .filter { $0?.value != nil }
11656
11653
  .compactMap { $0 }
@@ -11840,6 +11837,7 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11840
11837
  - outputFilename: Filename the xml file should be written to. Defaults to name of input file. (Only works if one input file is used)
11841
11838
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're handling this with a test reporter
11842
11839
  - xcprettyNaming: Produces class name and test name identical to xcpretty naming in junit file
11840
+ - forceLegacyXcresulttool: Force the use of the '--legacy' flag for xcresulttool instead of using the new commands
11843
11841
  - silent: Silences all output
11844
11842
  - outputRemoveRetryAttempts: Doesn't include retry attempts in the output
11845
11843
 
@@ -11851,6 +11849,7 @@ public func trainer(path: String = ".",
11851
11849
  outputFilename: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11852
11850
  failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(true),
11853
11851
  xcprettyNaming: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11852
+ forceLegacyXcresulttool: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11854
11853
  silent: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11855
11854
  outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(false))
11856
11855
  {
@@ -11860,6 +11859,7 @@ public func trainer(path: String = ".",
11860
11859
  let outputFilenameArg = outputFilename.asRubyArgument(name: "output_filename", type: nil)
11861
11860
  let failBuildArg = failBuild.asRubyArgument(name: "fail_build", type: nil)
11862
11861
  let xcprettyNamingArg = xcprettyNaming.asRubyArgument(name: "xcpretty_naming", type: nil)
11862
+ let forceLegacyXcresulttoolArg = forceLegacyXcresulttool.asRubyArgument(name: "force_legacy_xcresulttool", type: nil)
11863
11863
  let silentArg = silent.asRubyArgument(name: "silent", type: nil)
11864
11864
  let outputRemoveRetryAttemptsArg = outputRemoveRetryAttempts.asRubyArgument(name: "output_remove_retry_attempts", type: nil)
11865
11865
  let array: [RubyCommand.Argument?] = [pathArg,
@@ -11868,6 +11868,7 @@ public func trainer(path: String = ".",
11868
11868
  outputFilenameArg,
11869
11869
  failBuildArg,
11870
11870
  xcprettyNamingArg,
11871
+ forceLegacyXcresulttoolArg,
11871
11872
  silentArg,
11872
11873
  outputRemoveRetryAttemptsArg]
11873
11874
  let args: [RubyCommand.Argument] = array
@@ -13606,7 +13607,11 @@ public func xcodebuild() {
13606
13607
  - configuration: The configuration used when building the app. Defaults to 'Release'
13607
13608
  - sourceDirectory: The path to project's root directory
13608
13609
  - derivedDataPath: The directory where build products and other derived data will go
13610
+ - xccovFileDirectPath: The path or array of paths to the xccoverage/xccovreport/xcresult files to parse to generate code coverage
13609
13611
  - outputDirectory: The directory in which all reports will be stored
13612
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
13613
+ - useSystemScm: Lets xcodebuild use system's scm configuration
13614
+ - isSwiftPackage: Enables generating coverage reports for Package.swift derived projects
13610
13615
  - htmlReport: Produce an HTML report
13611
13616
  - markdownReport: Produce a Markdown report
13612
13617
  - jsonReport: Produce a JSON report
@@ -13618,6 +13623,7 @@ public func xcodebuild() {
13618
13623
  - slackMessage: The message which is published together with a successful report
13619
13624
  - ignoreFilePath: Relative or absolute path to the file containing the list of ignored files
13620
13625
  - includeTestTargets: Enables coverage reports for .xctest targets
13626
+ - includeZeroTargets: Final report will include target even if the coverage is 0%
13621
13627
  - excludeTargets: Comma separated list of targets to exclude from coverage report
13622
13628
  - includeTargets: Comma separated list of targets to include in coverage report. If specified then exlude_targets will be ignored
13623
13629
  - onlyProjectTargets: Display the coverage only for main project targets (e.g. skip Pods targets)
@@ -13630,7 +13636,7 @@ public func xcodebuild() {
13630
13636
  - legacySupport: Whether xcov should parse a xccoverage file instead on xccovreport
13631
13637
 
13632
13638
  Create nice code coverage reports and post coverage summaries on Slack *(xcov gem is required)*.
13633
- More information: [https://github.com/nakiostudio/xcov](https://github.com/nakiostudio/xcov).
13639
+ More information: [https://github.com/fastlane-community/xcov](https://github.com/fastlane-community/xcov).
13634
13640
  */
13635
13641
  public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13636
13642
  project: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -13638,7 +13644,11 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
13638
13644
  configuration: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13639
13645
  sourceDirectory: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13640
13646
  derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13647
+ xccovFileDirectPath: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
13641
13648
  outputDirectory: String = "./xcov_report",
13649
+ clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13650
+ useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false),
13651
+ isSwiftPackage: OptionalConfigValue<Bool> = .fastlaneDefault(false),
13642
13652
  htmlReport: OptionalConfigValue<Bool> = .fastlaneDefault(true),
13643
13653
  markdownReport: OptionalConfigValue<Bool> = .fastlaneDefault(false),
13644
13654
  jsonReport: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -13650,6 +13660,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
13650
13660
  slackMessage: String = "Your *xcov* coverage report",
13651
13661
  ignoreFilePath: String = "./.xcovignore",
13652
13662
  includeTestTargets: OptionalConfigValue<Bool> = .fastlaneDefault(false),
13663
+ includeZeroTargets: OptionalConfigValue<Bool> = .fastlaneDefault(true),
13653
13664
  excludeTargets: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13654
13665
  includeTargets: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13655
13666
  onlyProjectTargets: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -13658,7 +13669,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
13658
13669
  coverallsServiceJobId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13659
13670
  coverallsRepoToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13660
13671
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13661
- ideFoundationPath: String = "/Applications/Xcode_15.4.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13672
+ ideFoundationPath: String = "/Applications/Xcode_16.4.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13662
13673
  legacySupport: OptionalConfigValue<Bool> = .fastlaneDefault(false))
13663
13674
  {
13664
13675
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
@@ -13667,7 +13678,11 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
13667
13678
  let configurationArg = configuration.asRubyArgument(name: "configuration", type: nil)
13668
13679
  let sourceDirectoryArg = sourceDirectory.asRubyArgument(name: "source_directory", type: nil)
13669
13680
  let derivedDataPathArg = derivedDataPath.asRubyArgument(name: "derived_data_path", type: nil)
13681
+ let xccovFileDirectPathArg = xccovFileDirectPath.asRubyArgument(name: "xccov_file_direct_path", type: nil)
13670
13682
  let outputDirectoryArg = RubyCommand.Argument(name: "output_directory", value: outputDirectory, type: nil)
13683
+ let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
13684
+ let useSystemScmArg = useSystemScm.asRubyArgument(name: "use_system_scm", type: nil)
13685
+ let isSwiftPackageArg = isSwiftPackage.asRubyArgument(name: "is_swift_package", type: nil)
13671
13686
  let htmlReportArg = htmlReport.asRubyArgument(name: "html_report", type: nil)
13672
13687
  let markdownReportArg = markdownReport.asRubyArgument(name: "markdown_report", type: nil)
13673
13688
  let jsonReportArg = jsonReport.asRubyArgument(name: "json_report", type: nil)
@@ -13679,6 +13694,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
13679
13694
  let slackMessageArg = RubyCommand.Argument(name: "slack_message", value: slackMessage, type: nil)
13680
13695
  let ignoreFilePathArg = RubyCommand.Argument(name: "ignore_file_path", value: ignoreFilePath, type: nil)
13681
13696
  let includeTestTargetsArg = includeTestTargets.asRubyArgument(name: "include_test_targets", type: nil)
13697
+ let includeZeroTargetsArg = includeZeroTargets.asRubyArgument(name: "include_zero_targets", type: nil)
13682
13698
  let excludeTargetsArg = excludeTargets.asRubyArgument(name: "exclude_targets", type: nil)
13683
13699
  let includeTargetsArg = includeTargets.asRubyArgument(name: "include_targets", type: nil)
13684
13700
  let onlyProjectTargetsArg = onlyProjectTargets.asRubyArgument(name: "only_project_targets", type: nil)
@@ -13695,7 +13711,11 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
13695
13711
  configurationArg,
13696
13712
  sourceDirectoryArg,
13697
13713
  derivedDataPathArg,
13714
+ xccovFileDirectPathArg,
13698
13715
  outputDirectoryArg,
13716
+ clonedSourcePackagesPathArg,
13717
+ useSystemScmArg,
13718
+ isSwiftPackageArg,
13699
13719
  htmlReportArg,
13700
13720
  markdownReportArg,
13701
13721
  jsonReportArg,
@@ -13707,6 +13727,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
13707
13727
  slackMessageArg,
13708
13728
  ignoreFilePathArg,
13709
13729
  includeTestTargetsArg,
13730
+ includeZeroTargetsArg,
13710
13731
  excludeTargetsArg,
13711
13732
  includeTargetsArg,
13712
13733
  onlyProjectTargetsArg,
@@ -13807,7 +13828,7 @@ public func xcversion(version: String) {
13807
13828
  return runner.executeCommand(command)
13808
13829
  }
13809
13830
 
13810
- // These are all the parsing functions needed to transform our data into the expected types
13831
+ /// These are all the parsing functions needed to transform our data into the expected types
13811
13832
  func parseArray(fromString: String, function: String = #function) -> [String] {
13812
13833
  verbose(message: "parsing an Array from data: \(fromString), from function: \(function)")
13813
13834
  let potentialArray: String
@@ -13816,8 +13837,7 @@ func parseArray(fromString: String, function: String = #function) -> [String] {
13816
13837
  } else {
13817
13838
  potentialArray = fromString
13818
13839
  }
13819
- let array: [String] = try! JSONSerialization.jsonObject(with: potentialArray.data(using: .utf8)!, options: []) as! [String]
13820
- return array
13840
+ return try! JSONSerialization.jsonObject(with: potentialArray.data(using: .utf8)!, options: []) as! [String]
13821
13841
  }
13822
13842
 
13823
13843
  func parseDictionary(fromString: String, function: String = #function) -> [String: String] {
@@ -13837,8 +13857,7 @@ func parseDictionaryHelper(fromString: String, function: String = #function) ->
13837
13857
  } else {
13838
13858
  potentialDictionary = fromString
13839
13859
  }
13840
- let dictionary: [String: Any] = try! JSONSerialization.jsonObject(with: potentialDictionary.data(using: .utf8)!, options: []) as! [String: Any]
13841
- return dictionary
13860
+ return try! JSONSerialization.jsonObject(with: potentialDictionary.data(using: .utf8)!, options: []) as! [String: Any]
13842
13861
  }
13843
13862
 
13844
13863
  func parseBool(fromString: String, function: String = #function) -> Bool {
@@ -13861,4 +13880,4 @@ public let snapshotfile: Snapshotfile = .init()
13861
13880
 
13862
13881
  // Please don't remove the lines below
13863
13882
  // They are used to detect outdated files
13864
- // FastlaneRunnerAPIVersion [0.9.183]
13883
+ // FastlaneRunnerAPIVersion [0.9.195]