fastlane 2.216.0 → 2.218.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +96 -96
- data/deliver/lib/deliver/app_screenshot.rb +9 -2
- data/deliver/lib/deliver/app_screenshot_iterator.rb +2 -2
- data/deliver/lib/deliver/detect_values.rb +1 -1
- data/deliver/lib/deliver/languages.rb +1 -1
- data/deliver/lib/deliver/loader.rb +2 -2
- data/deliver/lib/deliver/options.rb +4 -4
- data/deliver/lib/deliver/runner.rb +3 -2
- data/deliver/lib/deliver/sync_screenshots.rb +2 -2
- data/deliver/lib/deliver/upload_metadata.rb +60 -15
- data/deliver/lib/deliver/upload_price_tier.rb +1 -1
- data/deliver/lib/deliver/upload_screenshots.rb +3 -3
- data/fastlane/lib/fastlane/action.rb +1 -1
- data/fastlane/lib/fastlane/actions/appledoc.rb +1 -1
- data/fastlane/lib/fastlane/actions/apteligent.rb +1 -1
- data/fastlane/lib/fastlane/actions/backup_xcarchive.rb +1 -1
- data/fastlane/lib/fastlane/actions/commit_github_file.rb +2 -2
- data/fastlane/lib/fastlane/actions/copy_artifacts.rb +1 -1
- data/fastlane/lib/fastlane/actions/create_app_online.rb +1 -1
- data/fastlane/lib/fastlane/actions/create_pull_request.rb +1 -1
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -1
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +6 -2
- data/fastlane/lib/fastlane/actions/get_certificates.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_github_release.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +1 -1
- data/fastlane/lib/fastlane/actions/git_branch.rb +1 -1
- data/fastlane/lib/fastlane/actions/github_api.rb +1 -1
- data/fastlane/lib/fastlane/actions/gradle.rb +1 -1
- data/fastlane/lib/fastlane/actions/install_on_device.rb +2 -2
- data/fastlane/lib/fastlane/actions/ipa.rb +1 -1
- data/fastlane/lib/fastlane/actions/jazzy.rb +1 -1
- data/fastlane/lib/fastlane/actions/nexus_upload.rb +1 -0
- data/fastlane/lib/fastlane/actions/notarize.rb +17 -2
- data/fastlane/lib/fastlane/actions/oclint.rb +3 -3
- data/fastlane/lib/fastlane/actions/opt_out_crash_reporting.rb +2 -2
- data/fastlane/lib/fastlane/actions/restore_file.rb +1 -1
- data/fastlane/lib/fastlane/actions/set_github_release.rb +1 -1
- data/fastlane/lib/fastlane/actions/slather.rb +18 -5
- data/fastlane/lib/fastlane/actions/sonar.rb +12 -3
- data/fastlane/lib/fastlane/actions/splunkmint.rb +1 -1
- data/fastlane/lib/fastlane/actions/spm.rb +76 -2
- data/fastlane/lib/fastlane/actions/update_info_plist.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_urban_airship_configuration.rb +1 -1
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +1 -0
- data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +1 -1
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +2 -2
- data/fastlane/lib/fastlane/actions/verify_build.rb +7 -4
- data/fastlane/lib/fastlane/actions/xcov.rb +1 -1
- data/fastlane/lib/fastlane/cli_tools_distributor.rb +1 -1
- data/fastlane/lib/fastlane/command_line_handler.rb +2 -4
- data/fastlane/lib/fastlane/commands_generator.rb +2 -2
- data/fastlane/lib/fastlane/fast_file.rb +1 -1
- data/fastlane/lib/fastlane/helper/dotenv_helper.rb +1 -1
- data/fastlane/lib/fastlane/helper/git_helper.rb +3 -0
- data/fastlane/lib/fastlane/junit_generator.rb +1 -1
- data/fastlane/lib/fastlane/lane.rb +9 -1
- data/fastlane/lib/fastlane/lane_manager.rb +1 -2
- data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +0 -11
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
- data/fastlane/lib/fastlane/plugins/template/Gemfile.erb +27 -0
- data/fastlane/lib/fastlane/runner.rb +2 -2
- data/fastlane/lib/fastlane/setup/setup.rb +1 -1
- data/fastlane/lib/fastlane/swift_lane_manager.rb +2 -5
- data/fastlane/lib/fastlane/swift_runner_upgrader.rb +7 -4
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Actions.swift +1 -1
- data/fastlane/swift/Appfile.swift +1 -1
- data/fastlane/swift/ArgumentProcessor.swift +1 -1
- data/fastlane/swift/Atomic.swift +1 -1
- data/fastlane/swift/ControlCommand.swift +1 -1
- data/fastlane/swift/Deliverfile.swift +2 -2
- data/fastlane/swift/DeliverfileProtocol.swift +4 -4
- data/fastlane/swift/Fastlane.swift +99 -31
- data/fastlane/swift/Gymfile.swift +2 -2
- data/fastlane/swift/GymfileProtocol.swift +2 -2
- data/fastlane/swift/LaneFileProtocol.swift +5 -5
- data/fastlane/swift/MainProcess.swift +1 -1
- data/fastlane/swift/Matchfile.swift +2 -2
- data/fastlane/swift/MatchfileProtocol.swift +6 -2
- data/fastlane/swift/OptionalConfigValue.swift +1 -1
- data/fastlane/swift/Plugins.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +2 -2
- data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
- data/fastlane/swift/RubyCommand.swift +1 -1
- data/fastlane/swift/RubyCommandable.swift +1 -1
- data/fastlane/swift/Runner.swift +1 -1
- data/fastlane/swift/RunnerArgument.swift +1 -1
- data/fastlane/swift/Scanfile.swift +2 -2
- data/fastlane/swift/ScanfileProtocol.swift +2 -2
- data/fastlane/swift/Screengrabfile.swift +2 -2
- data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
- data/fastlane/swift/Snapshotfile.swift +2 -2
- data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
- data/fastlane/swift/SocketClient.swift +1 -1
- data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
- data/fastlane/swift/SocketResponse.swift +1 -1
- data/fastlane/swift/formatting/Brewfile.lock.json +19 -29
- data/fastlane/swift/main.swift +1 -1
- data/fastlane_core/lib/fastlane_core/build_watcher.rb +1 -1
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +3 -3
- data/fastlane_core/lib/fastlane_core/configuration/configuration_file.rb +1 -1
- data/fastlane_core/lib/fastlane_core/device_manager.rb +17 -15
- data/fastlane_core/lib/fastlane_core/fastlane_pty.rb +34 -12
- data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +5 -2
- data/fastlane_core/lib/fastlane_core/project.rb +7 -2
- data/fastlane_core/lib/fastlane_core/queue_worker.rb +2 -2
- data/fastlane_core/lib/fastlane_core/string_filters.rb +6 -6
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +2 -2
- data/frameit/lib/frameit/editor.rb +4 -4
- data/frameit/lib/frameit/trim_box.rb +1 -1
- data/gym/lib/gym/error_handler.rb +1 -1
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +3 -3
- data/gym/lib/gym/module.rb +13 -2
- data/gym/lib/gym/options.rb +1 -1
- data/gym/lib/gym/runner.rb +1 -1
- data/gym/lib/gym/xcodebuild_fixes/README.md +1 -1
- data/match/lib/match/generator.rb +9 -1
- data/match/lib/match/module.rb +2 -1
- data/match/lib/match/options.rb +5 -0
- data/match/lib/match/portal_cache.rb +106 -0
- data/match/lib/match/portal_fetcher.rb +72 -0
- data/match/lib/match/profile_includes.rb +120 -0
- data/match/lib/match/runner.rb +79 -172
- data/match/lib/match/spaceship_ensure.rb +15 -11
- data/match/lib/match/storage/git_storage.rb +17 -4
- data/match/lib/match/storage/gitlab/client.rb +1 -1
- data/match/lib/match/storage/gitlab_secure_files.rb +1 -1
- data/match/lib/match/storage/interface.rb +1 -1
- data/match/lib/match/storage/s3_storage.rb +1 -1
- data/match/lib/match.rb +3 -0
- data/precheck/lib/precheck/rules/unreachable_urls_rule.rb +1 -1
- data/produce/lib/produce/itunes_connect.rb +1 -1
- data/scan/lib/scan/detect_values.rb +78 -20
- data/scan/lib/scan/options.rb +1 -1
- data/scan/lib/scan/runner.rb +1 -1
- data/screengrab/lib/screengrab/runner.rb +1 -1
- data/sigh/lib/assets/resign.sh +10 -10
- data/sigh/lib/sigh/commands_generator.rb +1 -1
- data/sigh/lib/sigh/module.rb +98 -0
- data/sigh/lib/sigh/options.rb +55 -1
- data/sigh/lib/sigh/resign.rb +1 -1
- data/sigh/lib/sigh/runner.rb +35 -111
- data/snapshot/lib/assets/SnapshotHelper.swift +13 -9
- data/snapshot/lib/snapshot/reports_generator.rb +48 -7
- data/snapshot/lib/snapshot/setup.rb +2 -2
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +23 -22
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +2 -2
- data/spaceship/lib/spaceship/client.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/api_client.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/client.rb +4 -4
- data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +2 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +2 -2
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +2 -0
- data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +5 -5
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +3 -3
- data/spaceship/lib/spaceship/connect_api/models/device.rb +83 -4
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +5 -3
- data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +14 -8
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +3 -6
- data/spaceship/lib/spaceship/connect_api.rb +2 -0
- data/spaceship/lib/spaceship/portal/app.rb +1 -1
- data/spaceship/lib/spaceship/portal/app_group.rb +1 -1
- data/spaceship/lib/spaceship/test_flight/client.rb +1 -1
- data/spaceship/lib/spaceship/test_flight/tester.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_details.rb +2 -2
- data/spaceship/lib/spaceship/tunes/app_image.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_review_attachment.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_submission.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_version.rb +5 -5
- data/spaceship/lib/spaceship/tunes/build_details.rb +1 -1
- data/spaceship/lib/spaceship/tunes/iap.rb +3 -3
- data/spaceship/lib/spaceship/tunes/iap_detail.rb +2 -2
- data/spaceship/lib/spaceship/tunes/iap_families.rb +1 -1
- data/spaceship/lib/spaceship/tunes/iap_family_details.rb +2 -2
- data/spaceship/lib/spaceship/tunes/iap_family_list.rb +1 -1
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
- data/supply/lib/supply/client.rb +1 -1
- data/supply/lib/supply/setup.rb +1 -1
- data/supply/lib/supply/uploader.rb +28 -13
- data/trainer/lib/trainer/junit_generator.rb +1 -1
- data/trainer/lib/trainer/test_parser.rb +1 -1
- data/trainer/lib/trainer/xcresult.rb +1 -1
- metadata +27 -293
- data/fastlane/lib/fastlane/.features.rb.swp +0 -0
- data/fastlane/lib/fastlane/plugins/template/Gemfile +0 -6
- data/fastlane_core/lib/fastlane_core/.env.rb.swp +0 -0
- data/supply/lib/supply/.client.rb.swp +0 -0
data/fastlane/swift/Runner.swift
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
// Scanfile.swift
|
2
|
-
// Copyright (c)
|
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.
|
20
|
+
// Generated with fastlane 2.218.0
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// ScanfileProtocol.swift
|
2
|
-
// Copyright (c)
|
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.
|
323
|
+
// FastlaneRunnerAPIVersion [0.9.130]
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// Screengrabfile.swift
|
2
|
-
// Copyright (c)
|
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.
|
20
|
+
// Generated with fastlane 2.218.0
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// ScreengrabfileProtocol.swift
|
2
|
-
// Copyright (c)
|
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.
|
99
|
+
// FastlaneRunnerAPIVersion [0.9.120]
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// Snapshotfile.swift
|
2
|
-
// Copyright (c)
|
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.
|
20
|
+
// Generated with fastlane 2.218.0
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// SnapshotfileProtocol.swift
|
2
|
-
// Copyright (c)
|
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.
|
207
|
+
// FastlaneRunnerAPIVersion [0.9.114]
|
@@ -2,55 +2,45 @@
|
|
2
2
|
"entries": {
|
3
3
|
"brew": {
|
4
4
|
"swiftformat": {
|
5
|
-
"version": "0.52.
|
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:
|
13
|
-
"sha256": "
|
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:
|
18
|
-
"sha256": "
|
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:
|
23
|
-
"sha256": "
|
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:
|
33
|
-
"sha256": "
|
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:
|
38
|
-
"sha256": "
|
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:
|
43
|
-
"sha256": "
|
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:
|
53
|
-
"sha256": "
|
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.
|
77
|
+
"HOMEBREW_VERSION": "4.2.2-4-g080e61f",
|
88
78
|
"HOMEBREW_PREFIX": "/opt/homebrew",
|
89
79
|
"Homebrew/homebrew-core": "api",
|
90
|
-
"CLT": "",
|
91
|
-
"Xcode": "
|
92
|
-
"macOS": "13.
|
80
|
+
"CLT": "15.0.0.0.1.1694021235",
|
81
|
+
"Xcode": "15.1",
|
82
|
+
"macOS": "13.6"
|
93
83
|
}
|
94
84
|
}
|
95
85
|
}
|
data/fastlane/swift/main.swift
CHANGED
@@ -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
|
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 =
|
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.
|
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
|
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:
|
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
|
-
|
41
|
-
|
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
|
-
|
45
|
-
|
61
|
+
status = p.value
|
62
|
+
yield(command_stdout, command_stdin, status.pid)
|
46
63
|
command_stdin.close
|
47
64
|
command_stdout.close
|
48
|
-
|
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
|
-
#
|
53
|
-
|
54
|
-
|
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
|
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
|
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
|
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
|
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 : [
|
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
|
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(
|
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(
|
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(
|
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
|
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
|
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
|
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'
|
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
|
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
|
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
|
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
|
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")
|