fastlane 2.216.0 → 2.218.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (189) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +96 -96
  3. data/deliver/lib/deliver/app_screenshot.rb +9 -2
  4. data/deliver/lib/deliver/app_screenshot_iterator.rb +2 -2
  5. data/deliver/lib/deliver/detect_values.rb +1 -1
  6. data/deliver/lib/deliver/languages.rb +1 -1
  7. data/deliver/lib/deliver/loader.rb +2 -2
  8. data/deliver/lib/deliver/options.rb +4 -4
  9. data/deliver/lib/deliver/runner.rb +3 -2
  10. data/deliver/lib/deliver/sync_screenshots.rb +2 -2
  11. data/deliver/lib/deliver/upload_metadata.rb +60 -15
  12. data/deliver/lib/deliver/upload_price_tier.rb +1 -1
  13. data/deliver/lib/deliver/upload_screenshots.rb +3 -3
  14. data/fastlane/lib/fastlane/action.rb +1 -1
  15. data/fastlane/lib/fastlane/actions/appledoc.rb +1 -1
  16. data/fastlane/lib/fastlane/actions/apteligent.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/backup_xcarchive.rb +1 -1
  18. data/fastlane/lib/fastlane/actions/commit_github_file.rb +2 -2
  19. data/fastlane/lib/fastlane/actions/copy_artifacts.rb +1 -1
  20. data/fastlane/lib/fastlane/actions/create_app_online.rb +1 -1
  21. data/fastlane/lib/fastlane/actions/create_pull_request.rb +1 -1
  22. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -1
  23. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +6 -2
  24. data/fastlane/lib/fastlane/actions/get_certificates.rb +1 -1
  25. data/fastlane/lib/fastlane/actions/get_github_release.rb +1 -1
  26. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +1 -1
  27. data/fastlane/lib/fastlane/actions/git_branch.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/github_api.rb +1 -1
  29. data/fastlane/lib/fastlane/actions/gradle.rb +1 -1
  30. data/fastlane/lib/fastlane/actions/install_on_device.rb +2 -2
  31. data/fastlane/lib/fastlane/actions/ipa.rb +1 -1
  32. data/fastlane/lib/fastlane/actions/jazzy.rb +1 -1
  33. data/fastlane/lib/fastlane/actions/nexus_upload.rb +1 -0
  34. data/fastlane/lib/fastlane/actions/notarize.rb +17 -2
  35. data/fastlane/lib/fastlane/actions/oclint.rb +3 -3
  36. data/fastlane/lib/fastlane/actions/opt_out_crash_reporting.rb +2 -2
  37. data/fastlane/lib/fastlane/actions/restore_file.rb +1 -1
  38. data/fastlane/lib/fastlane/actions/set_github_release.rb +1 -1
  39. data/fastlane/lib/fastlane/actions/slather.rb +18 -5
  40. data/fastlane/lib/fastlane/actions/sonar.rb +12 -3
  41. data/fastlane/lib/fastlane/actions/splunkmint.rb +1 -1
  42. data/fastlane/lib/fastlane/actions/spm.rb +76 -2
  43. data/fastlane/lib/fastlane/actions/update_info_plist.rb +1 -1
  44. data/fastlane/lib/fastlane/actions/update_urban_airship_configuration.rb +1 -1
  45. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +1 -0
  46. data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +1 -1
  47. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +2 -2
  48. data/fastlane/lib/fastlane/actions/verify_build.rb +7 -4
  49. data/fastlane/lib/fastlane/actions/xcov.rb +1 -1
  50. data/fastlane/lib/fastlane/cli_tools_distributor.rb +1 -1
  51. data/fastlane/lib/fastlane/command_line_handler.rb +2 -4
  52. data/fastlane/lib/fastlane/commands_generator.rb +2 -2
  53. data/fastlane/lib/fastlane/fast_file.rb +1 -1
  54. data/fastlane/lib/fastlane/helper/dotenv_helper.rb +1 -1
  55. data/fastlane/lib/fastlane/helper/git_helper.rb +3 -0
  56. data/fastlane/lib/fastlane/junit_generator.rb +1 -1
  57. data/fastlane/lib/fastlane/lane.rb +9 -1
  58. data/fastlane/lib/fastlane/lane_manager.rb +1 -2
  59. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +0 -11
  60. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
  61. data/fastlane/lib/fastlane/plugins/template/Gemfile.erb +27 -0
  62. data/fastlane/lib/fastlane/runner.rb +2 -2
  63. data/fastlane/lib/fastlane/setup/setup.rb +1 -1
  64. data/fastlane/lib/fastlane/swift_lane_manager.rb +2 -5
  65. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +7 -4
  66. data/fastlane/lib/fastlane/version.rb +1 -1
  67. data/fastlane/swift/Actions.swift +1 -1
  68. data/fastlane/swift/Appfile.swift +1 -1
  69. data/fastlane/swift/ArgumentProcessor.swift +1 -1
  70. data/fastlane/swift/Atomic.swift +1 -1
  71. data/fastlane/swift/ControlCommand.swift +1 -1
  72. data/fastlane/swift/Deliverfile.swift +2 -2
  73. data/fastlane/swift/DeliverfileProtocol.swift +4 -4
  74. data/fastlane/swift/Fastlane.swift +99 -31
  75. data/fastlane/swift/Gymfile.swift +2 -2
  76. data/fastlane/swift/GymfileProtocol.swift +2 -2
  77. data/fastlane/swift/LaneFileProtocol.swift +5 -5
  78. data/fastlane/swift/MainProcess.swift +1 -1
  79. data/fastlane/swift/Matchfile.swift +2 -2
  80. data/fastlane/swift/MatchfileProtocol.swift +6 -2
  81. data/fastlane/swift/OptionalConfigValue.swift +1 -1
  82. data/fastlane/swift/Plugins.swift +1 -1
  83. data/fastlane/swift/Precheckfile.swift +2 -2
  84. data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
  85. data/fastlane/swift/RubyCommand.swift +1 -1
  86. data/fastlane/swift/RubyCommandable.swift +1 -1
  87. data/fastlane/swift/Runner.swift +1 -1
  88. data/fastlane/swift/RunnerArgument.swift +1 -1
  89. data/fastlane/swift/Scanfile.swift +2 -2
  90. data/fastlane/swift/ScanfileProtocol.swift +2 -2
  91. data/fastlane/swift/Screengrabfile.swift +2 -2
  92. data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
  93. data/fastlane/swift/Snapshotfile.swift +2 -2
  94. data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
  95. data/fastlane/swift/SocketClient.swift +1 -1
  96. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  97. data/fastlane/swift/SocketResponse.swift +1 -1
  98. data/fastlane/swift/formatting/Brewfile.lock.json +19 -29
  99. data/fastlane/swift/main.swift +1 -1
  100. data/fastlane_core/lib/fastlane_core/build_watcher.rb +1 -1
  101. data/fastlane_core/lib/fastlane_core/cert_checker.rb +3 -3
  102. data/fastlane_core/lib/fastlane_core/configuration/configuration_file.rb +1 -1
  103. data/fastlane_core/lib/fastlane_core/device_manager.rb +17 -15
  104. data/fastlane_core/lib/fastlane_core/fastlane_pty.rb +34 -12
  105. data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
  106. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +5 -2
  107. data/fastlane_core/lib/fastlane_core/project.rb +7 -2
  108. data/fastlane_core/lib/fastlane_core/queue_worker.rb +2 -2
  109. data/fastlane_core/lib/fastlane_core/string_filters.rb +6 -6
  110. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +2 -2
  111. data/frameit/lib/frameit/editor.rb +4 -4
  112. data/frameit/lib/frameit/trim_box.rb +1 -1
  113. data/gym/lib/gym/error_handler.rb +1 -1
  114. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +3 -3
  115. data/gym/lib/gym/module.rb +13 -2
  116. data/gym/lib/gym/options.rb +1 -1
  117. data/gym/lib/gym/runner.rb +1 -1
  118. data/gym/lib/gym/xcodebuild_fixes/README.md +1 -1
  119. data/match/lib/match/generator.rb +9 -1
  120. data/match/lib/match/module.rb +2 -1
  121. data/match/lib/match/options.rb +5 -0
  122. data/match/lib/match/portal_cache.rb +106 -0
  123. data/match/lib/match/portal_fetcher.rb +72 -0
  124. data/match/lib/match/profile_includes.rb +120 -0
  125. data/match/lib/match/runner.rb +79 -172
  126. data/match/lib/match/spaceship_ensure.rb +15 -11
  127. data/match/lib/match/storage/git_storage.rb +17 -4
  128. data/match/lib/match/storage/gitlab/client.rb +1 -1
  129. data/match/lib/match/storage/gitlab_secure_files.rb +1 -1
  130. data/match/lib/match/storage/interface.rb +1 -1
  131. data/match/lib/match/storage/s3_storage.rb +1 -1
  132. data/match/lib/match.rb +3 -0
  133. data/precheck/lib/precheck/rules/unreachable_urls_rule.rb +1 -1
  134. data/produce/lib/produce/itunes_connect.rb +1 -1
  135. data/scan/lib/scan/detect_values.rb +78 -20
  136. data/scan/lib/scan/options.rb +1 -1
  137. data/scan/lib/scan/runner.rb +1 -1
  138. data/screengrab/lib/screengrab/runner.rb +1 -1
  139. data/sigh/lib/assets/resign.sh +10 -10
  140. data/sigh/lib/sigh/commands_generator.rb +1 -1
  141. data/sigh/lib/sigh/module.rb +98 -0
  142. data/sigh/lib/sigh/options.rb +55 -1
  143. data/sigh/lib/sigh/resign.rb +1 -1
  144. data/sigh/lib/sigh/runner.rb +35 -111
  145. data/snapshot/lib/assets/SnapshotHelper.swift +13 -9
  146. data/snapshot/lib/snapshot/reports_generator.rb +48 -7
  147. data/snapshot/lib/snapshot/setup.rb +2 -2
  148. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +23 -22
  149. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +2 -2
  150. data/spaceship/lib/spaceship/client.rb +1 -1
  151. data/spaceship/lib/spaceship/connect_api/api_client.rb +3 -2
  152. data/spaceship/lib/spaceship/connect_api/client.rb +4 -4
  153. data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +2 -0
  154. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +2 -2
  155. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +2 -0
  156. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +5 -5
  157. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +3 -3
  158. data/spaceship/lib/spaceship/connect_api/models/device.rb +83 -4
  159. data/spaceship/lib/spaceship/connect_api/models/profile.rb +5 -3
  160. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +14 -8
  161. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +3 -6
  162. data/spaceship/lib/spaceship/connect_api.rb +2 -0
  163. data/spaceship/lib/spaceship/portal/app.rb +1 -1
  164. data/spaceship/lib/spaceship/portal/app_group.rb +1 -1
  165. data/spaceship/lib/spaceship/test_flight/client.rb +1 -1
  166. data/spaceship/lib/spaceship/test_flight/tester.rb +1 -1
  167. data/spaceship/lib/spaceship/tunes/app_details.rb +2 -2
  168. data/spaceship/lib/spaceship/tunes/app_image.rb +1 -1
  169. data/spaceship/lib/spaceship/tunes/app_review_attachment.rb +1 -1
  170. data/spaceship/lib/spaceship/tunes/app_submission.rb +1 -1
  171. data/spaceship/lib/spaceship/tunes/app_version.rb +5 -5
  172. data/spaceship/lib/spaceship/tunes/build_details.rb +1 -1
  173. data/spaceship/lib/spaceship/tunes/iap.rb +3 -3
  174. data/spaceship/lib/spaceship/tunes/iap_detail.rb +2 -2
  175. data/spaceship/lib/spaceship/tunes/iap_families.rb +1 -1
  176. data/spaceship/lib/spaceship/tunes/iap_family_details.rb +2 -2
  177. data/spaceship/lib/spaceship/tunes/iap_family_list.rb +1 -1
  178. data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
  179. data/supply/lib/supply/client.rb +1 -1
  180. data/supply/lib/supply/setup.rb +1 -1
  181. data/supply/lib/supply/uploader.rb +28 -13
  182. data/trainer/lib/trainer/junit_generator.rb +1 -1
  183. data/trainer/lib/trainer/test_parser.rb +1 -1
  184. data/trainer/lib/trainer/xcresult.rb +1 -1
  185. metadata +27 -293
  186. data/fastlane/lib/fastlane/.features.rb.swp +0 -0
  187. data/fastlane/lib/fastlane/plugins/template/Gemfile +0 -6
  188. data/fastlane_core/lib/fastlane_core/.env.rb.swp +0 -0
  189. data/supply/lib/supply/.client.rb.swp +0 -0
@@ -1,5 +1,5 @@
1
1
  // RubyCommand.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // RubyCommandable.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // Runner.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // RunnerArgument.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // Scanfile.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Scanfile: ScanfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.216.0
20
+ // Generated with fastlane 2.218.0
@@ -1,5 +1,5 @@
1
1
  // ScanfileProtocol.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  public protocol ScanfileProtocol: AnyObject {
5
5
  /// Path to the workspace file
@@ -320,4 +320,4 @@ public extension ScanfileProtocol {
320
320
 
321
321
  // Please don't remove the lines below
322
322
  // They are used to detect outdated files
323
- // FastlaneRunnerAPIVersion [0.9.128]
323
+ // FastlaneRunnerAPIVersion [0.9.130]
@@ -1,5 +1,5 @@
1
1
  // Screengrabfile.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Screengrabfile: ScreengrabfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.216.0
20
+ // Generated with fastlane 2.218.0
@@ -1,5 +1,5 @@
1
1
  // ScreengrabfileProtocol.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  public protocol ScreengrabfileProtocol: AnyObject {
5
5
  /// Path to the root of your Android SDK installation, e.g. ~/tools/android-sdk-macosx
@@ -96,4 +96,4 @@ public extension ScreengrabfileProtocol {
96
96
 
97
97
  // Please don't remove the lines below
98
98
  // They are used to detect outdated files
99
- // FastlaneRunnerAPIVersion [0.9.118]
99
+ // FastlaneRunnerAPIVersion [0.9.120]
@@ -1,5 +1,5 @@
1
1
  // Snapshotfile.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Snapshotfile: SnapshotfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.216.0
20
+ // Generated with fastlane 2.218.0
@@ -1,5 +1,5 @@
1
1
  // SnapshotfileProtocol.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  public protocol SnapshotfileProtocol: AnyObject {
5
5
  /// Path the workspace file
@@ -204,4 +204,4 @@ public extension SnapshotfileProtocol {
204
204
 
205
205
  // Please don't remove the lines below
206
206
  // They are used to detect outdated files
207
- // FastlaneRunnerAPIVersion [0.9.112]
207
+ // FastlaneRunnerAPIVersion [0.9.114]
@@ -1,5 +1,5 @@
1
1
  // SocketClient.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // SocketClientDelegateProtocol.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // SocketResponse.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -2,55 +2,45 @@
2
2
  "entries": {
3
3
  "brew": {
4
4
  "swiftformat": {
5
- "version": "0.52.4",
5
+ "version": "0.52.11",
6
6
  "bottle": {
7
7
  "rebuild": 0,
8
8
  "root_url": "https://ghcr.io/v2/homebrew/core",
9
9
  "files": {
10
10
  "arm64_sonoma": {
11
11
  "cellar": ":any_skip_relocation",
12
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:211b2c1465afea2476d380c4af2999bdd16dd2d9f62d174f797f83af257706f7",
13
- "sha256": "211b2c1465afea2476d380c4af2999bdd16dd2d9f62d174f797f83af257706f7"
12
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:b1dabab20931536f6cb157767e6e732ecbabb093ffaaae7325f9971f3c6b6db5",
13
+ "sha256": "b1dabab20931536f6cb157767e6e732ecbabb093ffaaae7325f9971f3c6b6db5"
14
14
  },
15
15
  "arm64_ventura": {
16
16
  "cellar": ":any_skip_relocation",
17
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:e590260ea2cc8857e807f044d2c438445c75837154a3e6ae8be5999b239bcf85",
18
- "sha256": "e590260ea2cc8857e807f044d2c438445c75837154a3e6ae8be5999b239bcf85"
17
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:2674f87602a4a6d6af2f6ee822f7e36eb09c65e4bc31448d79d8955981645b1c",
18
+ "sha256": "2674f87602a4a6d6af2f6ee822f7e36eb09c65e4bc31448d79d8955981645b1c"
19
19
  },
20
20
  "arm64_monterey": {
21
21
  "cellar": ":any_skip_relocation",
22
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:fb05650b13b66370e72593f46cc764c46abc956c81aed4c627beeb788dde96f8",
23
- "sha256": "fb05650b13b66370e72593f46cc764c46abc956c81aed4c627beeb788dde96f8"
24
- },
25
- "arm64_big_sur": {
26
- "cellar": ":any_skip_relocation",
27
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:aa49d987ffd2f32284fd422f1038f5a17584655be5cbfc3bb3726752fd00a6c5",
28
- "sha256": "aa49d987ffd2f32284fd422f1038f5a17584655be5cbfc3bb3726752fd00a6c5"
22
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:1581f87673144bd34caa286b236e0c9d9cae42c20f5ff353ec7d139d03b63fd3",
23
+ "sha256": "1581f87673144bd34caa286b236e0c9d9cae42c20f5ff353ec7d139d03b63fd3"
29
24
  },
30
25
  "sonoma": {
31
26
  "cellar": ":any_skip_relocation",
32
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:85a95d6bedc08f25f232b7d5adbaa99662060a2579cc702685343b3ab9c8b87d",
33
- "sha256": "85a95d6bedc08f25f232b7d5adbaa99662060a2579cc702685343b3ab9c8b87d"
27
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:d10f7a49255b390e1f8f174947427ae12b3d60477071b6922f0ae59579bebf16",
28
+ "sha256": "d10f7a49255b390e1f8f174947427ae12b3d60477071b6922f0ae59579bebf16"
34
29
  },
35
30
  "ventura": {
36
31
  "cellar": ":any_skip_relocation",
37
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:6686712b546ae867ec07561ced1c215eb5d93a4f54852f3348a66e52f249f644",
38
- "sha256": "6686712b546ae867ec07561ced1c215eb5d93a4f54852f3348a66e52f249f644"
32
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:8505abd9424d6bc0b992302fcb319aea05119eb2397ccc6777c09e6932364c74",
33
+ "sha256": "8505abd9424d6bc0b992302fcb319aea05119eb2397ccc6777c09e6932364c74"
39
34
  },
40
35
  "monterey": {
41
36
  "cellar": ":any_skip_relocation",
42
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:ed379b65cc248b290cf833ce2a088bfb280276de94bedee6b4c56e21bec36a72",
43
- "sha256": "ed379b65cc248b290cf833ce2a088bfb280276de94bedee6b4c56e21bec36a72"
44
- },
45
- "big_sur": {
46
- "cellar": ":any_skip_relocation",
47
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:492b417360077a31d5c78cfa173526fb8219430e84d01f24f9402ca1d97a63f0",
48
- "sha256": "492b417360077a31d5c78cfa173526fb8219430e84d01f24f9402ca1d97a63f0"
37
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:c13826f376fd6dbf5afb4d9a435f39abb10b795473c8f25b9db986c731d627ee",
38
+ "sha256": "c13826f376fd6dbf5afb4d9a435f39abb10b795473c8f25b9db986c731d627ee"
49
39
  },
50
40
  "x86_64_linux": {
51
41
  "cellar": "/home/linuxbrew/.linuxbrew/Cellar",
52
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:c6e703b2b48601787c1cd4f68adfea340e7ab0f4d9e2ddb3d15e6f38a9d50502",
53
- "sha256": "c6e703b2b48601787c1cd4f68adfea340e7ab0f4d9e2ddb3d15e6f38a9d50502"
42
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:c9400f4f4641d817facf5621eed3d2fe078361c83c80d34b91763185068ea740",
43
+ "sha256": "c9400f4f4641d817facf5621eed3d2fe078361c83c80d34b91763185068ea740"
54
44
  }
55
45
  }
56
46
  }
@@ -84,12 +74,12 @@
84
74
  "macOS": "12.5"
85
75
  },
86
76
  "ventura": {
87
- "HOMEBREW_VERSION": "4.1.11-38-gaa2a77b",
77
+ "HOMEBREW_VERSION": "4.2.2-4-g080e61f",
88
78
  "HOMEBREW_PREFIX": "/opt/homebrew",
89
79
  "Homebrew/homebrew-core": "api",
90
- "CLT": "",
91
- "Xcode": "14.3",
92
- "macOS": "13.4"
80
+ "CLT": "15.0.0.0.1.1694021235",
81
+ "Xcode": "15.1",
82
+ "macOS": "13.6"
93
83
  }
94
84
  }
95
85
  }
@@ -1,5 +1,5 @@
1
1
  // main.swift
2
- // Copyright (c) 2023 FastlaneTools
2
+ // Copyright (c) 2024 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -83,7 +83,7 @@ module FastlaneCore
83
83
 
84
84
  # App Store Connect will allow users to upload X.Y is the same as X.Y.0 and treat them as the same version
85
85
  # However, only the first uploaded version format will be the one that is queryable
86
- # This could lead to BuildWatcher never finding X.Y.0 if X.Y was upoaded first as X.Y will only yield results
86
+ # This could lead to BuildWatcher never finding X.Y.0 if X.Y was uploaded first as X.Y will only yield results
87
87
  #
88
88
  # This will add an additional request to search for both X.Y and X.Y.0 but
89
89
  # will give preference to the version format specified passed in
@@ -39,7 +39,7 @@ module FastlaneCore
39
39
  def self.installed?(path, in_keychain: nil)
40
40
  UI.user_error!("Could not find file '#{path}'") unless File.exist?(path)
41
41
 
42
- ids = installed_identies(in_keychain: in_keychain)
42
+ ids = installed_identities(in_keychain: in_keychain)
43
43
  ids += installed_installers(in_keychain: in_keychain)
44
44
  finger_print = sha1_fingerprint(path)
45
45
 
@@ -51,7 +51,7 @@ module FastlaneCore
51
51
  installed?(path)
52
52
  end
53
53
 
54
- def self.installed_identies(in_keychain: nil)
54
+ def self.installed_identities(in_keychain: nil)
55
55
  install_missing_wwdr_certificates
56
56
 
57
57
  available = list_available_identities(in_keychain: in_keychain)
@@ -116,7 +116,7 @@ module FastlaneCore
116
116
 
117
117
  # Find all installed WWDRCA certificates
118
118
  installed_certs = []
119
- Helper.backticks("security find-certificate -a -c '#{certificate_name}' -p #{wwdr_keychain.shellescape}")
119
+ Helper.backticks("security find-certificate -a -c '#{certificate_name}' -p #{wwdr_keychain.shellescape}", print: false)
120
120
  .lines
121
121
  .each do |line|
122
122
  if line.start_with?('-----BEGIN CERTIFICATE-----')
@@ -48,7 +48,7 @@ module FastlaneCore
48
48
 
49
49
  print_resulting_config_values unless skip_printing_values # only on success
50
50
  rescue SyntaxError => ex
51
- line = ex.to_s.match(/\(eval\):(\d+)/)[1]
51
+ line = ex.to_s.match(/\(eval.*\):(\d+)/)[1]
52
52
  UI.error("Error in your #{File.basename(path)} at line #{line}")
53
53
  UI.content_error(content, line)
54
54
  UI.user_error!("Syntax error in your configuration file '#{path}' on line #{line}: #{ex}")
@@ -11,6 +11,19 @@ module FastlaneCore
11
11
  return connected_devices(requested_os_type) + simulators(requested_os_type)
12
12
  end
13
13
 
14
+ def runtime_build_os_versions
15
+ @runtime_build_os_versions ||= begin
16
+ output, status = Open3.capture2('xcrun simctl list runtimes -j')
17
+ raise status unless status.success?
18
+ json = JSON.parse(output)
19
+ json['runtimes'].map { |h| [h['buildversion'], h['version']] }.to_h
20
+ rescue StandardError => e
21
+ UI.error(e)
22
+ UI.error('xcrun simctl CLI broken; cun `xcrun simctl list runtimes` and make sure it works')
23
+ UI.user_error!('xcrun simctl not working')
24
+ end
25
+ end
26
+
14
27
  def simulators(requested_os_type = "")
15
28
  UI.verbose("Fetching available simulator devices")
16
29
 
@@ -22,18 +35,6 @@ module FastlaneCore
22
35
  output = stdout.read
23
36
  end
24
37
 
25
- runtime_info = ''
26
- Open3.popen3('xcrun simctl list runtimes') do |stdin, stdout, stderr, wait_thr|
27
- # This regex outputs the version info in the format "<platform> <version><exact version>"
28
- runtime_info = stdout.read.lines.map { |v| v.sub(/(\w+ \S+)\s*\((\S+)\s[\S\s]*/, "\\1 \\2") }.drop(1)
29
- end
30
- exact_versions = Hash.new({})
31
- runtime_info.each do |r|
32
- platform, general, exact = r.split
33
- exact_versions[platform] = {} unless exact_versions.include?(platform)
34
- exact_versions[platform][general] = exact
35
- end
36
-
37
38
  unless output.include?("== Devices ==")
38
39
  UI.error("xcrun simctl CLI broken, run `xcrun simctl list devices` and make sure it works")
39
40
  UI.user_error!("xcrun simctl not working.")
@@ -57,7 +58,7 @@ module FastlaneCore
57
58
 
58
59
  if matches.count && (os_type == requested_os_type || requested_os_type == "")
59
60
  # This is disabled here because the Device is defined later in the file, and that's a problem for the cop
60
- @devices << Device.new(name: name, os_type: os_type, os_version: (exact_versions[os_type][os_version] || os_version), udid: udid, state: state, is_simulator: true)
61
+ @devices << Device.new(name: name, os_type: os_type, os_version: os_version, udid: udid, state: state, is_simulator: true)
61
62
  end
62
63
  end
63
64
  end
@@ -204,9 +205,9 @@ module FastlaneCore
204
205
  return unless os_type == "iOS"
205
206
  return if self.state == 'Booted'
206
207
 
208
+ # Boot the simulator and wait for it to finish booting
207
209
  UI.message("Booting #{self}")
208
-
209
- `xcrun simctl boot #{self.udid} 2>/dev/null`
210
+ `xcrun simctl bootstatus #{self.udid} -b &> /dev/null`
210
211
  self.state = 'Booted'
211
212
  end
212
213
 
@@ -289,6 +290,7 @@ module FastlaneCore
289
290
 
290
291
  def clear_cache
291
292
  @devices = nil
293
+ @runtime_build_os_versions = nil
292
294
  end
293
295
 
294
296
  def launch(device)
@@ -10,16 +10,23 @@ end
10
10
 
11
11
  module FastlaneCore
12
12
  class FastlanePtyError < StandardError
13
- attr_reader :exit_status
14
- def initialize(e, exit_status)
13
+ attr_reader :exit_status, :process_status
14
+ def initialize(e, exit_status, process_status)
15
15
  super(e)
16
16
  set_backtrace(e.backtrace) if e
17
17
  @exit_status = exit_status
18
+ @process_status = process_status
18
19
  end
19
20
  end
20
21
 
21
22
  class FastlanePty
22
- def self.spawn(command)
23
+ def self.spawn(command, &block)
24
+ spawn_with_pty(command, &block)
25
+ rescue LoadError
26
+ spawn_with_popen(command, &block)
27
+ end
28
+
29
+ def self.spawn_with_pty(command, &block)
23
30
  require 'pty'
24
31
  PTY.spawn(command) do |command_stdout, command_stdin, pid|
25
32
  begin
@@ -37,21 +44,36 @@ module FastlaneCore
37
44
  end
38
45
  end
39
46
  end
40
- $?.exitstatus
41
- rescue LoadError
47
+ status = self.process_status
48
+ raise StandardError, "Process crashed" if status.signaled?
49
+ status.exitstatus
50
+ rescue StandardError => e
51
+ # Wrapping any error in FastlanePtyError to allow callers to see and use
52
+ # $?.exitstatus that would usually get returned
53
+ status = self.process_status
54
+ raise FastlanePtyError.new(e, status.exitstatus || e.exit_status, status)
55
+ end
56
+
57
+ def self.spawn_with_popen(command, &block)
58
+ status = nil
42
59
  require 'open3'
43
60
  Open3.popen2e(command) do |command_stdin, command_stdout, p| # note the inversion
44
- yield(command_stdout, command_stdin, p.value.pid)
45
-
61
+ status = p.value
62
+ yield(command_stdout, command_stdin, status.pid)
46
63
  command_stdin.close
47
64
  command_stdout.close
48
- p.value.exitstatus
65
+ raise StandardError, "Process crashed" if status.signaled?
66
+ status.exitstatus
49
67
  end
50
68
  rescue StandardError => e
51
- # Wrapping any error in FastlanePtyError to allow
52
- # callers to see and use $?.exitstatus that
53
- # would usually get returned
54
- raise FastlanePtyError.new(e, $?.exitstatus)
69
+ # Wrapping any error in FastlanePtyError to allow callers to see and use
70
+ # $?.exitstatus that would usually get returned
71
+ raise FastlanePtyError.new(e, status.exitstatus || e.exit_status, status)
72
+ end
73
+
74
+ # to ease mocking
75
+ def self.process_status
76
+ $?
55
77
  end
56
78
  end
57
79
  end
@@ -180,7 +180,7 @@ module FastlaneCore
180
180
  # @return Swift version
181
181
  def self.swift_version
182
182
  if system("which swift > /dev/null 2>&1")
183
- output = `swift --version`
183
+ output = `swift --version 2> /dev/null`
184
184
  return output.split("\n").first.match(/version ([0-9.]+)/).captures.first
185
185
  end
186
186
  return nil
@@ -215,6 +215,8 @@ module FastlaneCore
215
215
 
216
216
  private_constant :ERROR_REGEX
217
217
 
218
+ attr_reader :errors
219
+
218
220
  def execute(command, hide_output)
219
221
  if Helper.test?
220
222
  yield(nil) if block_given?
@@ -244,6 +246,7 @@ module FastlaneCore
244
246
  end
245
247
 
246
248
  @errors << "The call to the altool completed with a non-zero exit status: #{exit_status}. This indicates a failure." unless exit_status.zero?
249
+ @errors << "-1 indicates altool exited abnormally; try retrying (see https://github.com/fastlane/fastlane/issues/21535)" if exit_status == -1
247
250
 
248
251
  unless @errors.empty? || @all_lines.empty?
249
252
  # Print the last lines that appear after the last error from the logs
@@ -801,7 +804,7 @@ module FastlaneCore
801
804
  if result
802
805
  UI.header("Successfully uploaded package to App Store Connect. It might take a few minutes until it's visible online.")
803
806
 
804
- FileUtils.rm_rf(actual_dir) unless Helper.test? # we don't need the package any more, since the upload was successful
807
+ FileUtils.rm_rf(actual_dir) unless Helper.test? # we don't need the package anymore, since the upload was successful
805
808
  else
806
809
  handle_error(@password)
807
810
  end
@@ -859,7 +862,7 @@ module FastlaneCore
859
862
  if result
860
863
  UI.header("Successfully verified package on App Store Connect")
861
864
 
862
- FileUtils.rm_rf(actual_dir) unless Helper.test? # we don't need the package any more, since the upload was successful
865
+ FileUtils.rm_rf(actual_dir) unless Helper.test? # we don't need the package anymore, since the upload was successful
863
866
  else
864
867
  handle_error(@password)
865
868
  end
@@ -70,7 +70,7 @@ module FastlaneCore
70
70
 
71
71
  # @param options [FastlaneCore::Configuration|Hash] a set of configuration to run xcodebuild to work out build settings
72
72
  # @param xcodebuild_list_silent [Boolean] a flag to silent xcodebuild command's output
73
- # @param xcodebuild_suppress_stderr [Boolean] a flag to supress output to stderr from xcodebuild
73
+ # @param xcodebuild_suppress_stderr [Boolean] a flag to suppress output to stderr from xcodebuild
74
74
  def initialize(options)
75
75
  @options = options
76
76
  @path = File.expand_path(self.options[:workspace] || self.options[:project])
@@ -192,7 +192,7 @@ module FastlaneCore
192
192
  .reject { |p| p.include?("Pods/Pods.xcodeproj") }
193
193
  .map do |p|
194
194
  # To maintain backwards compatibility, we
195
- # silently ignore non-existent projects from
195
+ # silently ignore nonexistent projects from
196
196
  # workspaces.
197
197
  begin
198
198
  Xcodeproj::Project.open(p).build_configurations
@@ -307,6 +307,10 @@ module FastlaneCore
307
307
  supported_platforms.include?(:watchOS)
308
308
  end
309
309
 
310
+ def multiplatform?
311
+ supported_platforms.count > 1
312
+ end
313
+
310
314
  def supported_platforms
311
315
  supported_platforms = build_settings(key: "SUPPORTED_PLATFORMS")
312
316
  if supported_platforms.nil?
@@ -360,6 +364,7 @@ module FastlaneCore
360
364
  else
361
365
  command = "xcodebuild clean -showBuildSettings #{xcodebuild_parameters.join(' ')}"
362
366
  end
367
+ command = "#{command} 2>&1" # xcodebuild produces errors on stderr #21672
363
368
  command
364
369
  end
365
370
 
@@ -6,7 +6,7 @@ module FastlaneCore
6
6
  # Use this when you have all the items that you'll process in advance.
7
7
  # Simply enqueue them to this and call `QueueWorker#start`.
8
8
  class QueueWorker
9
- NUMBER_OF_THREADS = FastlaneCore::Helper.test? ? 1 : [(ENV["DELIVER_NUMBER_OF_THREADS"] || ENV.fetch("FL_NUMBER_OF_THREADS", 10)).to_i, 10].min
9
+ NUMBER_OF_THREADS = FastlaneCore::Helper.test? ? 1 : [ENV["DELIVER_NUMBER_OF_THREADS"], ENV["FL_NUMBER_OF_THREADS"], 10].map(&:to_i).find(&:positive?).clamp(1, ENV.fetch("FL_MAX_NUMBER_OF_THREADS", 10).to_i)
10
10
 
11
11
  # @param concurrency (Numeric) - A number of threads to be created
12
12
  # @param block (Proc) - A task you want to execute with enqueued items
@@ -27,7 +27,7 @@ module FastlaneCore
27
27
  jobs.each { |job| enqueue(job) }
28
28
  end
29
29
 
30
- # Call this after you enqueuned all the jobs you want to process
30
+ # Call this after you enqueued all the jobs you want to process
31
31
  # This method blocks current thread until all the enqueued jobs are processed
32
32
  def start
33
33
  @queue.close
@@ -1,16 +1,16 @@
1
1
  class String
2
2
  # Truncates a given +text+ after a given <tt>length</tt> if +text+ is longer than <tt>length</tt>:
3
3
  #
4
- # 'Once upon a time in a world far far away'.truncate(27)
5
- # # => "Once upon a time in a wo..."
4
+ # 'Once upon a time, in a world far, far away'.truncate(28)
5
+ # # => "Once upon a time, in a wo..."
6
6
  #
7
7
  # Pass a string or regexp <tt>:separator</tt> to truncate +text+ at a natural break:
8
8
  #
9
- # 'Once upon a time in a world far far away'.truncate(27, separator: ' ')
10
- # # => "Once upon a time in a..."
9
+ # 'Once upon a time, in a world far, far away'.truncate(28, separator: ' ')
10
+ # # => "Once upon a time, in a..."
11
11
  #
12
- # 'Once upon a time in a world far far away'.truncate(27, separator: /\s/)
13
- # # => "Once upon a time in a..."
12
+ # 'Once upon a time, in a world far, far away'.truncate(28, separator: /\s/)
13
+ # # => "Once upon a time, in a..."
14
14
  #
15
15
  # The last characters will be replaced with the <tt>:omission</tt> string (defaults to "...")
16
16
  # for a total length not exceeding <tt>length</tt>:
@@ -34,7 +34,7 @@ module Commander
34
34
 
35
35
  attr_accessor :collector
36
36
 
37
- # Temporary work around for issues mentioned in https://github.com/fastlane/fastlane/pull/18760
37
+ # Temporary workaround for issues mentioned in https://github.com/fastlane/fastlane/pull/18760
38
38
  # Code taken from https://github.com/commander-rb/commander/blob/40d06bfbc54906d0de7c72ac73f4e9188c9ca294/lib/commander/runner.rb#L372-L385
39
39
  #
40
40
  # Problem:
@@ -283,7 +283,7 @@ module Commander
283
283
  def handle_unknown_error!(e)
284
284
  # Some spaceship exception classes implement #preferred_error_info in order to share error info
285
285
  # that we'd rather display instead of crashing with a stack trace. However, fastlane_core and
286
- # spaceship can not know about each other's classes! To make this information passing work, we
286
+ # spaceship cannot know about each other's classes! To make this information passing work, we
287
287
  # use a bit of Ruby duck-typing to check whether the unknown exception type implements the right
288
288
  # method. If so, we'll present any returned error info in the manner of a user_error!
289
289
  error_info = e.respond_to?(:preferred_error_info) ? e.preferred_error_info : nil
@@ -325,7 +325,7 @@ module Frameit
325
325
  end
326
326
 
327
327
  def put_title_into_background(background, stack_title)
328
- text_images = build_text_images(image.width - 2 * horizontal_frame_padding, image.height - 2 * vertical_frame_padding, stack_title)
328
+ text_images = build_text_images(image.width - 2 * horizontal_frame_padding, image.height - 2 * vertical_frame_padding)
329
329
 
330
330
  keyword = text_images[:keyword]
331
331
  title = text_images[:title]
@@ -390,7 +390,7 @@ module Frameit
390
390
  return font_size if !font_size.nil? && font_size > 0
391
391
 
392
392
  font_scale_factor = @config['font_scale_factor'] || 0.1
393
- UI.user_error!("Parameter 'font_scale_factor' can not be 0. Please provide a value larger than 0.0 (default = 0.1).") if font_scale_factor == 0.0
393
+ UI.user_error!("Parameter 'font_scale_factor' cannot be 0. Please provide a value larger than 0.0 (default = 0.1).") if font_scale_factor == 0.0
394
394
  [@image.width * font_scale_factor].max.round
395
395
  end
396
396
 
@@ -400,7 +400,7 @@ module Frameit
400
400
  end
401
401
 
402
402
  # This will build up to 2 individual images with the title and optional keyword, which will then be added to the real image
403
- def build_text_images(max_width, max_height, stack_title)
403
+ def build_text_images(max_width, max_height)
404
404
  words = [:keyword, :title].keep_if { |a| fetch_text(a) } # optional keyword/title
405
405
  results = {}
406
406
  trim_boxes = {}
@@ -439,7 +439,7 @@ module Frameit
439
439
 
440
440
  results[key] = text_image
441
441
 
442
- # Natively trimming the image with .trim will result in the loss of the common baseline between the text in all images when side-by-side (e.g. stack_title is false).
442
+ # Natively trimming the image with .trim will result in the loss of the common baseline between the text in all images when side-by-side.
443
443
  # Hence retrieve the calculated trim bounding box without actually trimming:
444
444
  calculated_trim_box = text_image.identify do |b|
445
445
  b.format("%@") # CALCULATED: trim bounding box (without actually trimming), see: http://www.imagemagick.org/script/escape.php
@@ -10,7 +10,7 @@ module Frameit
10
10
 
11
11
  # identify_string: A string with syntax "<width>x<height>+<offset_x>+<offset_y>". This is returned by MiniMagick when using function .identify with format("%@"). It is also required for the MiniMagick .crop function.
12
12
  def initialize(identify_string)
13
- UI.user_error!("Trimbox can not be initialised with an empty 'identify_string'.") unless identify_string.length > 0
13
+ UI.user_error!("Trimbox cannot be initialised with an empty 'identify_string'.") unless identify_string.length > 0
14
14
 
15
15
  # Parse the input syntax "<width>x<height>+<offset_x>+<offset_y>".
16
16
  # Extract these 4 parameters into an integer array, by using multiple string separators: "x" and "+":
@@ -21,7 +21,7 @@ module Gym
21
21
  print("Invalid code signing settings")
22
22
  print("Your project defines a provisioning profile that doesn't match the bundle identifier of your app")
23
23
  print("Make sure you use the correct provisioning profile for this app")
24
- print("Take a look at the ouptput above for more information")
24
+ print("Take a look at the output above for more information")
25
25
  print("You can follow this guide: https://docs.fastlane.tools/codesigning/GettingStarted/")
26
26
  when /provisioning profiles matching the bundle identifier .(.*)./ # the . around the (.*) are for the strange "
27
27
  print("You don't have the provisioning profile for '#{$1}' installed on the local machine")