fastlane 2.195.0 → 2.198.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +80 -80
- data/cert/lib/cert/runner.rb +5 -2
- data/deliver/lib/assets/ScreenshotsHelp +29 -6
- data/deliver/lib/deliver/app_screenshot.rb +5 -4
- data/deliver/lib/deliver/runner.rb +1 -1
- data/deliver/lib/deliver/upload_screenshots.rb +1 -1
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +12 -6
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -1
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +47 -30
- data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_version_number.rb +6 -2
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -3
- data/fastlane/lib/fastlane/actions/notarize.rb +29 -11
- data/fastlane/lib/fastlane/actions/set_github_release.rb +11 -5
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastlane.swift +57 -17
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +5 -1
- data/fastlane/swift/LaneFileProtocol.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/Runner.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +3 -3
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
- data/fastlane/swift/formatting/Brewfile.lock.json +27 -22
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +38 -7
- data/frameit/lib/frameit/editor.rb +16 -18
- data/frameit/lib/frameit/trim_box.rb +6 -0
- data/gym/lib/gym/generators/build_command_generator.rb +1 -1
- data/gym/lib/gym/options.rb +6 -0
- data/match/lib/match/nuke.rb +79 -1
- data/match/lib/match/spaceship_ensure.rb +1 -0
- data/pem/lib/pem/manager.rb +31 -7
- data/pem/lib/pem/options.rb +10 -1
- data/pilot/lib/pilot/build_manager.rb +1 -1
- data/scan/lib/scan/runner.rb +1 -1
- data/screengrab/lib/screengrab/options.rb +2 -2
- data/sigh/lib/assets/resign.sh +8 -5
- data/snapshot/lib/snapshot/reports_generator.rb +8 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -2
- data/spaceship/lib/spaceship/connect_api/models/build_bundle.rb +59 -0
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +3 -0
- data/spaceship/lib/spaceship/connect_api/testflight/.testflight.rb.swp +0 -0
- data/spaceship/lib/spaceship/connect_api/token.rb +1 -1
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- data/supply/lib/supply/client.rb +3 -3
- data/supply/lib/supply/uploader.rb +1 -1
- metadata +38 -32
@@ -5,6 +5,7 @@ module Fastlane
|
|
5
5
|
def self.run(params)
|
6
6
|
package_path = params[:package]
|
7
7
|
bundle_id = params[:bundle_id]
|
8
|
+
skip_stapling = params[:skip_stapling]
|
8
9
|
try_early_stapling = params[:try_early_stapling]
|
9
10
|
print_log = params[:print_log]
|
10
11
|
verbose = params[:verbose]
|
@@ -38,13 +39,13 @@ module Fastlane
|
|
38
39
|
UI.user_error!('Could not read bundle identifier, provide as a parameter') unless bundle_id
|
39
40
|
|
40
41
|
if use_notarytool
|
41
|
-
notarytool(params, package_path, bundle_id,
|
42
|
+
notarytool(params, package_path, bundle_id, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
42
43
|
else
|
43
|
-
altool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key, compressed_package_path)
|
44
|
+
altool(params, package_path, bundle_id, try_early_stapling, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
47
|
-
def self.notarytool(params, package_path, bundle_id,
|
48
|
+
def self.notarytool(params, package_path, bundle_id, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
48
49
|
temp_file = nil
|
49
50
|
|
50
51
|
# Create authorization part of command with either API Key or Apple ID
|
@@ -89,10 +90,15 @@ module Fastlane
|
|
89
90
|
submission_id = notarization_info["id"]
|
90
91
|
UI.success("Successfully uploaded package to notarization service with request identifier #{submission_id}")
|
91
92
|
|
92
|
-
|
93
|
-
|
93
|
+
if skip_stapling
|
94
|
+
UI.success("Successfully notarized artifact")
|
95
|
+
else
|
96
|
+
UI.message('Stapling package')
|
94
97
|
|
95
|
-
|
98
|
+
self.staple(package_path, verbose)
|
99
|
+
|
100
|
+
UI.success("Successfully notarized and stapled package")
|
101
|
+
end
|
96
102
|
when 'Invalid'
|
97
103
|
UI.user_error!("Could not notarize package with message '#{notarization_info['statusSummary']}'")
|
98
104
|
else
|
@@ -102,7 +108,7 @@ module Fastlane
|
|
102
108
|
temp_file.delete if temp_file
|
103
109
|
end
|
104
110
|
|
105
|
-
def self.altool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key, compressed_package_path)
|
111
|
+
def self.altool(params, package_path, bundle_id, try_early_stapling, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
106
112
|
UI.message('Uploading package to notarization service, might take a while')
|
107
113
|
|
108
114
|
notarization_upload_command = "xcrun altool --notarize-app -t osx -f \"#{compressed_package_path || package_path}\" --primary-bundle-id #{bundle_id} --output-format xml"
|
@@ -133,7 +139,7 @@ module Fastlane
|
|
133
139
|
while notarization_info.empty? || (notarization_info['Status'] == 'in progress')
|
134
140
|
if notarization_info.empty?
|
135
141
|
UI.message('Waiting to query request status')
|
136
|
-
elsif try_early_stapling
|
142
|
+
elsif try_early_stapling && !skip_stapling
|
137
143
|
UI.message('Request in progress, trying early staple')
|
138
144
|
|
139
145
|
begin
|
@@ -182,11 +188,15 @@ module Fastlane
|
|
182
188
|
|
183
189
|
case notarization_info['Status']
|
184
190
|
when 'success'
|
185
|
-
|
191
|
+
if skip_stapling
|
192
|
+
UI.success("Successfully notarized artifact#{log_suffix}")
|
193
|
+
else
|
194
|
+
UI.message('Stapling package')
|
186
195
|
|
187
|
-
|
196
|
+
self.staple(package_path, verbose)
|
188
197
|
|
189
|
-
|
198
|
+
UI.success("Successfully notarized and stapled package#{log_suffix}")
|
199
|
+
end
|
190
200
|
when 'invalid'
|
191
201
|
UI.user_error!("Could not notarize package with message '#{notarization_info['Status Message']}'#{log_suffix}")
|
192
202
|
else
|
@@ -262,6 +272,14 @@ module Fastlane
|
|
262
272
|
env_name: 'FL_NOTARIZE_TRY_EARLY_STAPLING',
|
263
273
|
description: 'Whether to try early stapling while the notarization request is in progress',
|
264
274
|
optional: true,
|
275
|
+
conflicting_options: [:skip_stapling],
|
276
|
+
default_value: false,
|
277
|
+
type: Boolean),
|
278
|
+
FastlaneCore::ConfigItem.new(key: :skip_stapling,
|
279
|
+
env_name: 'FL_NOTARIZE_SKIP_STAPLING',
|
280
|
+
description: 'Do not staple the notarization ticket to the artifact; useful for single file executables and ZIP archives',
|
281
|
+
optional: true,
|
282
|
+
conflicting_options: [:try_early_stapling],
|
265
283
|
default_value: false,
|
266
284
|
type: Boolean),
|
267
285
|
FastlaneCore::ConfigItem.new(key: :bundle_id,
|
@@ -19,11 +19,12 @@ module Fastlane
|
|
19
19
|
|
20
20
|
payload = {
|
21
21
|
'tag_name' => params[:tag_name],
|
22
|
-
'name' => params[:name],
|
23
|
-
'body' => params[:description],
|
24
22
|
'draft' => !!params[:is_draft],
|
25
|
-
'prerelease' => !!params[:is_prerelease]
|
23
|
+
'prerelease' => !!params[:is_prerelease],
|
24
|
+
'generate_release_notes' => !!params[:is_generate_release_notes]
|
26
25
|
}
|
26
|
+
payload['name'] = params[:name] if params[:name]
|
27
|
+
payload['body'] = params[:description] if params[:description]
|
27
28
|
payload['target_commitish'] = params[:commitish] if params[:commitish]
|
28
29
|
|
29
30
|
GithubApiAction.run(
|
@@ -48,8 +49,7 @@ module Fastlane
|
|
48
49
|
UI.user_error!("You are not authorized to access #{repo_name}, please make sure you provided a valid API token (GITHUB_API_TOKEN)")
|
49
50
|
end,
|
50
51
|
'*' => proc do |result|
|
51
|
-
UI.
|
52
|
-
return nil
|
52
|
+
UI.user_error!("GitHub responded with #{result[:status]}:#{result[:body]}")
|
53
53
|
end
|
54
54
|
}
|
55
55
|
) do |result|
|
@@ -221,6 +221,12 @@ module Fastlane
|
|
221
221
|
optional: true,
|
222
222
|
default_value: false,
|
223
223
|
type: Boolean),
|
224
|
+
FastlaneCore::ConfigItem.new(key: :is_generate_release_notes,
|
225
|
+
env_name: "FL_SET_GITHUB_RELEASE_IS_GENERATE_RELEASE_NOTES",
|
226
|
+
description: "Whether the name and body of this release should be generated automatically",
|
227
|
+
optional: true,
|
228
|
+
default_value: false,
|
229
|
+
type: Boolean),
|
224
230
|
FastlaneCore::ConfigItem.new(key: :upload_assets,
|
225
231
|
env_name: "FL_SET_GITHUB_RELEASE_UPLOAD_ASSETS",
|
226
232
|
description: "Path to assets to be uploaded with the release",
|
@@ -1322,6 +1322,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
|
|
1322
1322
|
- analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
|
1323
1323
|
- xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
|
1324
1324
|
- skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
1325
|
+
- xcodebuildCommand: Allows for override of the default `xcodebuild` command
|
1325
1326
|
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
1326
1327
|
- skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
|
1327
1328
|
- disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
|
@@ -1374,6 +1375,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
|
|
1374
1375
|
analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
|
1375
1376
|
xcprettyUtf: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
|
1376
1377
|
skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
1378
|
+
xcodebuildCommand: String = "xcodebuild",
|
1377
1379
|
clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
1378
1380
|
skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
1379
1381
|
disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
@@ -1422,6 +1424,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
|
|
1422
1424
|
let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
|
1423
1425
|
let xcprettyUtfArg = xcprettyUtf.asRubyArgument(name: "xcpretty_utf", type: nil)
|
1424
1426
|
let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
|
1427
|
+
let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
|
1425
1428
|
let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
|
1426
1429
|
let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
|
1427
1430
|
let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
|
@@ -1469,6 +1472,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
|
|
1469
1472
|
analyzeBuildTimeArg,
|
1470
1473
|
xcprettyUtfArg,
|
1471
1474
|
skipProfileDetectionArg,
|
1475
|
+
xcodebuildCommandArg,
|
1472
1476
|
clonedSourcePackagesPathArg,
|
1473
1477
|
skipPackageDependenciesResolutionArg,
|
1474
1478
|
disablePackageAutomaticUpdatesArg,
|
@@ -1524,6 +1528,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
|
|
1524
1528
|
- analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
|
1525
1529
|
- xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
|
1526
1530
|
- skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
1531
|
+
- xcodebuildCommand: Allows for override of the default `xcodebuild` command
|
1527
1532
|
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
1528
1533
|
- skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
|
1529
1534
|
- disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
|
@@ -1573,6 +1578,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
|
|
1573
1578
|
analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
|
1574
1579
|
xcprettyUtf: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
|
1575
1580
|
skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
1581
|
+
xcodebuildCommand: String = "xcodebuild",
|
1576
1582
|
clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
1577
1583
|
skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
1578
1584
|
disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
@@ -1618,6 +1624,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
|
|
1618
1624
|
let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
|
1619
1625
|
let xcprettyUtfArg = xcprettyUtf.asRubyArgument(name: "xcpretty_utf", type: nil)
|
1620
1626
|
let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
|
1627
|
+
let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
|
1621
1628
|
let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
|
1622
1629
|
let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
|
1623
1630
|
let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
|
@@ -1662,6 +1669,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
|
|
1662
1669
|
analyzeBuildTimeArg,
|
1663
1670
|
xcprettyUtfArg,
|
1664
1671
|
skipProfileDetectionArg,
|
1672
|
+
xcodebuildCommandArg,
|
1665
1673
|
clonedSourcePackagesPathArg,
|
1666
1674
|
skipPackageDependenciesResolutionArg,
|
1667
1675
|
disablePackageAutomaticUpdatesArg,
|
@@ -1718,6 +1726,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
|
|
1718
1726
|
- analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
|
1719
1727
|
- xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
|
1720
1728
|
- skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
1729
|
+
- xcodebuildCommand: Allows for override of the default `xcodebuild` command
|
1721
1730
|
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
1722
1731
|
- skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
|
1723
1732
|
- disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
|
@@ -1768,6 +1777,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
|
|
1768
1777
|
analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
|
1769
1778
|
xcprettyUtf: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
|
1770
1779
|
skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
1780
|
+
xcodebuildCommand: String = "xcodebuild",
|
1771
1781
|
clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
1772
1782
|
skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
1773
1783
|
disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
@@ -1814,6 +1824,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
|
|
1814
1824
|
let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
|
1815
1825
|
let xcprettyUtfArg = xcprettyUtf.asRubyArgument(name: "xcpretty_utf", type: nil)
|
1816
1826
|
let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
|
1827
|
+
let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
|
1817
1828
|
let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
|
1818
1829
|
let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
|
1819
1830
|
let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
|
@@ -1859,6 +1870,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
|
|
1859
1870
|
analyzeBuildTimeArg,
|
1860
1871
|
xcprettyUtfArg,
|
1861
1872
|
skipProfileDetectionArg,
|
1873
|
+
xcodebuildCommandArg,
|
1862
1874
|
clonedSourcePackagesPathArg,
|
1863
1875
|
skipPackageDependenciesResolutionArg,
|
1864
1876
|
disablePackageAutomaticUpdatesArg,
|
@@ -1982,10 +1994,10 @@ public func bundleInstall(binstubs: OptionalConfigValue<String?> = .fastlaneDefa
|
|
1982
1994
|
- endingLocale: **DEPRECATED!** Return the device to this locale after running tests
|
1983
1995
|
- useAdbRoot: **DEPRECATED!** Restarts the adb daemon using `adb root` to allow access to screenshots directories on device. Use if getting 'Permission denied' errors
|
1984
1996
|
- appApkPath: The path to the APK for the app under test
|
1985
|
-
- testsApkPath: The path to the APK for the
|
1997
|
+
- testsApkPath: The path to the APK for the tests bundle
|
1986
1998
|
- specificDevice: Use the device or emulator with the given serial number or qualifier
|
1987
1999
|
- deviceType: Type of device used for screenshots. Matches Google Play Types (phone, sevenInch, tenInch, tv, wear)
|
1988
|
-
- exitOnTestFailure: Whether or not to exit Screengrab on test failure. Exiting on failure will not copy
|
2000
|
+
- exitOnTestFailure: Whether or not to exit Screengrab on test failure. Exiting on failure will not copy screenshots to local machine nor open screenshots summary
|
1989
2001
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
1990
2002
|
- useTimestampSuffix: Add timestamp suffix to screenshot filename
|
1991
2003
|
- adbHost: Configure the host used by adb to connect, allows running on remote devices farm
|
@@ -4013,6 +4025,8 @@ public func downloadAppPrivacyDetailsFromAppStore(username: String,
|
|
4013
4025
|
Download dSYM files from App Store Connect for Bitcode apps
|
4014
4026
|
|
4015
4027
|
- parameters:
|
4028
|
+
- 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)
|
4029
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
4016
4030
|
- username: Your Apple ID Username for App Store Connect
|
4017
4031
|
- appIdentifier: The bundle identifier of your app
|
4018
4032
|
- teamId: The ID of your App Store Connect team if you're in multiple teams
|
@@ -4037,7 +4051,9 @@ public func downloadAppPrivacyDetailsFromAppStore(username: String,
|
|
4037
4051
|
```|
|
4038
4052
|
>|
|
4039
4053
|
*/
|
4040
|
-
public func downloadDsyms(
|
4054
|
+
public func downloadDsyms(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
4055
|
+
apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
|
4056
|
+
username: String,
|
4041
4057
|
appIdentifier: String,
|
4042
4058
|
teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
4043
4059
|
teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
@@ -4050,6 +4066,8 @@ public func downloadDsyms(username: String,
|
|
4050
4066
|
waitForDsymProcessing: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
4051
4067
|
waitTimeout: Int = 300)
|
4052
4068
|
{
|
4069
|
+
let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
|
4070
|
+
let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
|
4053
4071
|
let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
|
4054
4072
|
let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
|
4055
4073
|
let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
|
@@ -4062,7 +4080,9 @@ public func downloadDsyms(username: String,
|
|
4062
4080
|
let outputDirectoryArg = outputDirectory.asRubyArgument(name: "output_directory", type: nil)
|
4063
4081
|
let waitForDsymProcessingArg = waitForDsymProcessing.asRubyArgument(name: "wait_for_dsym_processing", type: nil)
|
4064
4082
|
let waitTimeoutArg = RubyCommand.Argument(name: "wait_timeout", value: waitTimeout, type: nil)
|
4065
|
-
let array: [RubyCommand.Argument?] = [
|
4083
|
+
let array: [RubyCommand.Argument?] = [apiKeyPathArg,
|
4084
|
+
apiKeyArg,
|
4085
|
+
usernameArg,
|
4066
4086
|
appIdentifierArg,
|
4067
4087
|
teamIdArg,
|
4068
4088
|
teamNameArg,
|
@@ -4985,6 +5005,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
|
|
4985
5005
|
Ensure a valid push profile is active, creating a new one if needed (via _pem_)
|
4986
5006
|
|
4987
5007
|
- parameters:
|
5008
|
+
- platform: Set certificate's platform. Used for creation of production & development certificates. Supported platforms: ios, macos
|
4988
5009
|
- development: Renew the development push certificate instead of the production one
|
4989
5010
|
- websitePush: Create a Website Push certificate
|
4990
5011
|
- generateP12: Generate a p12 file additionally to a PEM file
|
@@ -5012,7 +5033,8 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
|
|
5012
5033
|
```|
|
5013
5034
|
>|
|
5014
5035
|
*/
|
5015
|
-
public func getPushCertificate(
|
5036
|
+
public func getPushCertificate(platform: String = "ios",
|
5037
|
+
development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
5016
5038
|
websitePush: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
5017
5039
|
generateP12: OptionalConfigValue<Bool> = .fastlaneDefault(true),
|
5018
5040
|
activeDaysLimit: Int = 30,
|
@@ -5022,11 +5044,12 @@ public func getPushCertificate(development: OptionalConfigValue<Bool> = .fastlan
|
|
5022
5044
|
username: String,
|
5023
5045
|
teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
5024
5046
|
teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
5025
|
-
p12Password: String,
|
5047
|
+
p12Password: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
5026
5048
|
pemName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
5027
5049
|
outputPath: String = ".",
|
5028
5050
|
newProfile: ((String) -> Void)? = nil)
|
5029
5051
|
{
|
5052
|
+
let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
|
5030
5053
|
let developmentArg = development.asRubyArgument(name: "development", type: nil)
|
5031
5054
|
let websitePushArg = websitePush.asRubyArgument(name: "website_push", type: nil)
|
5032
5055
|
let generateP12Arg = generateP12.asRubyArgument(name: "generate_p12", type: nil)
|
@@ -5037,11 +5060,12 @@ public func getPushCertificate(development: OptionalConfigValue<Bool> = .fastlan
|
|
5037
5060
|
let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
|
5038
5061
|
let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
|
5039
5062
|
let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
|
5040
|
-
let p12PasswordArg =
|
5063
|
+
let p12PasswordArg = p12Password.asRubyArgument(name: "p12_password", type: nil)
|
5041
5064
|
let pemNameArg = pemName.asRubyArgument(name: "pem_name", type: nil)
|
5042
5065
|
let outputPathArg = RubyCommand.Argument(name: "output_path", value: outputPath, type: nil)
|
5043
5066
|
let newProfileArg = RubyCommand.Argument(name: "new_profile", value: newProfile, type: .stringClosure)
|
5044
|
-
let array: [RubyCommand.Argument?] = [
|
5067
|
+
let array: [RubyCommand.Argument?] = [platformArg,
|
5068
|
+
developmentArg,
|
5045
5069
|
websitePushArg,
|
5046
5070
|
generateP12Arg,
|
5047
5071
|
activeDaysLimitArg,
|
@@ -5070,7 +5094,7 @@ public func getPushCertificate(development: OptionalConfigValue<Bool> = .fastlan
|
|
5070
5094
|
- target: Target name, optional. Will be needed if you have more than one non-test target to avoid being prompted to select one
|
5071
5095
|
- configuration: Configuration name, optional. Will be needed if you have altered the configurations from the default or your version number depends on the configuration selected
|
5072
5096
|
|
5073
|
-
This action will return the current version number set on your project.
|
5097
|
+
This action will return the current version number set on your project. It first looks in the plist and then for '$(MARKETING_VERSION)' in the build settings.
|
5074
5098
|
*/
|
5075
5099
|
@discardableResult public func getVersionNumber(xcodeproj: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
5076
5100
|
target: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
@@ -5513,6 +5537,7 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
5513
5537
|
- analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
|
5514
5538
|
- xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
|
5515
5539
|
- skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
5540
|
+
- xcodebuildCommand: Allows for override of the default `xcodebuild` command
|
5516
5541
|
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
5517
5542
|
- skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
|
5518
5543
|
- disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
|
@@ -5565,6 +5590,7 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
5565
5590
|
analyzeBuildTime: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.analyzeBuildTime),
|
5566
5591
|
xcprettyUtf: OptionalConfigValue<Bool?> = .fastlaneDefault(gymfile.xcprettyUtf),
|
5567
5592
|
skipProfileDetection: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.skipProfileDetection),
|
5593
|
+
xcodebuildCommand: String = gymfile.xcodebuildCommand,
|
5568
5594
|
clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(gymfile.clonedSourcePackagesPath),
|
5569
5595
|
skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.skipPackageDependenciesResolution),
|
5570
5596
|
disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(gymfile.disablePackageAutomaticUpdates),
|
@@ -5613,6 +5639,7 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
5613
5639
|
let analyzeBuildTimeArg = analyzeBuildTime.asRubyArgument(name: "analyze_build_time", type: nil)
|
5614
5640
|
let xcprettyUtfArg = xcprettyUtf.asRubyArgument(name: "xcpretty_utf", type: nil)
|
5615
5641
|
let skipProfileDetectionArg = skipProfileDetection.asRubyArgument(name: "skip_profile_detection", type: nil)
|
5642
|
+
let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
|
5616
5643
|
let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
|
5617
5644
|
let skipPackageDependenciesResolutionArg = skipPackageDependenciesResolution.asRubyArgument(name: "skip_package_dependencies_resolution", type: nil)
|
5618
5645
|
let disablePackageAutomaticUpdatesArg = disablePackageAutomaticUpdates.asRubyArgument(name: "disable_package_automatic_updates", type: nil)
|
@@ -5660,6 +5687,7 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
5660
5687
|
analyzeBuildTimeArg,
|
5661
5688
|
xcprettyUtfArg,
|
5662
5689
|
skipProfileDetectionArg,
|
5690
|
+
xcodebuildCommandArg,
|
5663
5691
|
clonedSourcePackagesPathArg,
|
5664
5692
|
skipPackageDependenciesResolutionArg,
|
5665
5693
|
disablePackageAutomaticUpdatesArg,
|
@@ -7090,6 +7118,7 @@ public func nexusUpload(file: String,
|
|
7090
7118
|
- package: Path to package to notarize, e.g. .app bundle or disk image
|
7091
7119
|
- useNotarytool: Whether to `xcrun notarytool` or `xcrun altool`
|
7092
7120
|
- tryEarlyStapling: Whether to try early stapling while the notarization request is in progress
|
7121
|
+
- skipStapling: Do not staple the notarization ticket to the artifact; useful for single file executables and ZIP archives
|
7093
7122
|
- bundleId: Bundle identifier to uniquely identify the package
|
7094
7123
|
- username: Apple ID username
|
7095
7124
|
- ascProvider: Provider short name for accounts associated with multiple providers
|
@@ -7101,6 +7130,7 @@ public func nexusUpload(file: String,
|
|
7101
7130
|
public func notarize(package: String,
|
7102
7131
|
useNotarytool: OptionalConfigValue<Bool> = .fastlaneDefault(true),
|
7103
7132
|
tryEarlyStapling: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
7133
|
+
skipStapling: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
7104
7134
|
bundleId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7105
7135
|
username: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7106
7136
|
ascProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
@@ -7112,6 +7142,7 @@ public func notarize(package: String,
|
|
7112
7142
|
let packageArg = RubyCommand.Argument(name: "package", value: package, type: nil)
|
7113
7143
|
let useNotarytoolArg = useNotarytool.asRubyArgument(name: "use_notarytool", type: nil)
|
7114
7144
|
let tryEarlyStaplingArg = tryEarlyStapling.asRubyArgument(name: "try_early_stapling", type: nil)
|
7145
|
+
let skipStaplingArg = skipStapling.asRubyArgument(name: "skip_stapling", type: nil)
|
7115
7146
|
let bundleIdArg = bundleId.asRubyArgument(name: "bundle_id", type: nil)
|
7116
7147
|
let usernameArg = username.asRubyArgument(name: "username", type: nil)
|
7117
7148
|
let ascProviderArg = ascProvider.asRubyArgument(name: "asc_provider", type: nil)
|
@@ -7122,6 +7153,7 @@ public func notarize(package: String,
|
|
7122
7153
|
let array: [RubyCommand.Argument?] = [packageArg,
|
7123
7154
|
useNotarytoolArg,
|
7124
7155
|
tryEarlyStaplingArg,
|
7156
|
+
skipStaplingArg,
|
7125
7157
|
bundleIdArg,
|
7126
7158
|
usernameArg,
|
7127
7159
|
ascProviderArg,
|
@@ -7383,6 +7415,7 @@ public func optOutUsage() {
|
|
7383
7415
|
Alias for the `get_push_certificate` action
|
7384
7416
|
|
7385
7417
|
- parameters:
|
7418
|
+
- platform: Set certificate's platform. Used for creation of production & development certificates. Supported platforms: ios, macos
|
7386
7419
|
- development: Renew the development push certificate instead of the production one
|
7387
7420
|
- websitePush: Create a Website Push certificate
|
7388
7421
|
- generateP12: Generate a p12 file additionally to a PEM file
|
@@ -7410,7 +7443,8 @@ public func optOutUsage() {
|
|
7410
7443
|
```|
|
7411
7444
|
>|
|
7412
7445
|
*/
|
7413
|
-
public func pem(
|
7446
|
+
public func pem(platform: String = "ios",
|
7447
|
+
development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
7414
7448
|
websitePush: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
7415
7449
|
generateP12: OptionalConfigValue<Bool> = .fastlaneDefault(true),
|
7416
7450
|
activeDaysLimit: Int = 30,
|
@@ -7420,11 +7454,12 @@ public func pem(development: OptionalConfigValue<Bool> = .fastlaneDefault(false)
|
|
7420
7454
|
username: String,
|
7421
7455
|
teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7422
7456
|
teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7423
|
-
p12Password: String,
|
7457
|
+
p12Password: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7424
7458
|
pemName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7425
7459
|
outputPath: String = ".",
|
7426
7460
|
newProfile: ((String) -> Void)? = nil)
|
7427
7461
|
{
|
7462
|
+
let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
|
7428
7463
|
let developmentArg = development.asRubyArgument(name: "development", type: nil)
|
7429
7464
|
let websitePushArg = websitePush.asRubyArgument(name: "website_push", type: nil)
|
7430
7465
|
let generateP12Arg = generateP12.asRubyArgument(name: "generate_p12", type: nil)
|
@@ -7435,11 +7470,12 @@ public func pem(development: OptionalConfigValue<Bool> = .fastlaneDefault(false)
|
|
7435
7470
|
let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
|
7436
7471
|
let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
|
7437
7472
|
let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
|
7438
|
-
let p12PasswordArg =
|
7473
|
+
let p12PasswordArg = p12Password.asRubyArgument(name: "p12_password", type: nil)
|
7439
7474
|
let pemNameArg = pemName.asRubyArgument(name: "pem_name", type: nil)
|
7440
7475
|
let outputPathArg = RubyCommand.Argument(name: "output_path", value: outputPath, type: nil)
|
7441
7476
|
let newProfileArg = RubyCommand.Argument(name: "new_profile", value: newProfile, type: .stringClosure)
|
7442
|
-
let array: [RubyCommand.Argument?] = [
|
7477
|
+
let array: [RubyCommand.Argument?] = [platformArg,
|
7478
|
+
developmentArg,
|
7443
7479
|
websitePushArg,
|
7444
7480
|
generateP12Arg,
|
7445
7481
|
activeDaysLimitArg,
|
@@ -9256,10 +9292,10 @@ public func scp(username: String,
|
|
9256
9292
|
- endingLocale: **DEPRECATED!** Return the device to this locale after running tests
|
9257
9293
|
- useAdbRoot: **DEPRECATED!** Restarts the adb daemon using `adb root` to allow access to screenshots directories on device. Use if getting 'Permission denied' errors
|
9258
9294
|
- appApkPath: The path to the APK for the app under test
|
9259
|
-
- testsApkPath: The path to the APK for the
|
9295
|
+
- testsApkPath: The path to the APK for the tests bundle
|
9260
9296
|
- specificDevice: Use the device or emulator with the given serial number or qualifier
|
9261
9297
|
- deviceType: Type of device used for screenshots. Matches Google Play Types (phone, sevenInch, tenInch, tv, wear)
|
9262
|
-
- exitOnTestFailure: Whether or not to exit Screengrab on test failure. Exiting on failure will not copy
|
9298
|
+
- exitOnTestFailure: Whether or not to exit Screengrab on test failure. Exiting on failure will not copy screenshots to local machine nor open screenshots summary
|
9263
9299
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
9264
9300
|
- useTimestampSuffix: Add timestamp suffix to screenshot filename
|
9265
9301
|
- adbHost: Configure the host used by adb to connect, allows running on remote devices farm
|
@@ -9430,6 +9466,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
|
|
9430
9466
|
- description: Description of this release
|
9431
9467
|
- isDraft: Whether the release should be marked as draft
|
9432
9468
|
- isPrerelease: Whether the release should be marked as prerelease
|
9469
|
+
- isGenerateReleaseNotes: Whether the name and body of this release should be generated automatically
|
9433
9470
|
- uploadAssets: Path to assets to be uploaded with the release
|
9434
9471
|
|
9435
9472
|
- returns: A hash containing all relevant information of this release
|
@@ -9449,6 +9486,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
|
|
9449
9486
|
description: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
9450
9487
|
isDraft: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
9451
9488
|
isPrerelease: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
9489
|
+
isGenerateReleaseNotes: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
9452
9490
|
uploadAssets: OptionalConfigValue<[String]?> = .fastlaneDefault(nil)) -> [String: Any]
|
9453
9491
|
{
|
9454
9492
|
let repositoryNameArg = RubyCommand.Argument(name: "repository_name", value: repositoryName, type: nil)
|
@@ -9461,6 +9499,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
|
|
9461
9499
|
let descriptionArg = description.asRubyArgument(name: "description", type: nil)
|
9462
9500
|
let isDraftArg = isDraft.asRubyArgument(name: "is_draft", type: nil)
|
9463
9501
|
let isPrereleaseArg = isPrerelease.asRubyArgument(name: "is_prerelease", type: nil)
|
9502
|
+
let isGenerateReleaseNotesArg = isGenerateReleaseNotes.asRubyArgument(name: "is_generate_release_notes", type: nil)
|
9464
9503
|
let uploadAssetsArg = uploadAssets.asRubyArgument(name: "upload_assets", type: nil)
|
9465
9504
|
let array: [RubyCommand.Argument?] = [repositoryNameArg,
|
9466
9505
|
serverUrlArg,
|
@@ -9472,6 +9511,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
|
|
9472
9511
|
descriptionArg,
|
9473
9512
|
isDraftArg,
|
9474
9513
|
isPrereleaseArg,
|
9514
|
+
isGenerateReleaseNotesArg,
|
9475
9515
|
uploadAssetsArg]
|
9476
9516
|
let args: [RubyCommand.Argument] = array
|
9477
9517
|
.filter { $0?.value != nil }
|
@@ -13040,7 +13080,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
|
|
13040
13080
|
coverallsServiceJobId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
13041
13081
|
coverallsRepoToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
13042
13082
|
xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
13043
|
-
ideFoundationPath: String = "/Applications/Xcode-13.
|
13083
|
+
ideFoundationPath: String = "/Applications/Xcode-13.1.0.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
13044
13084
|
legacySupport: OptionalConfigValue<Bool> = .fastlaneDefault(false))
|
13045
13085
|
{
|
13046
13086
|
let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
|
@@ -13242,4 +13282,4 @@ public let snapshotfile = Snapshotfile()
|
|
13242
13282
|
|
13243
13283
|
// Please don't remove the lines below
|
13244
13284
|
// They are used to detect outdated files
|
13245
|
-
// FastlaneRunnerAPIVersion [0.9.
|
13285
|
+
// FastlaneRunnerAPIVersion [0.9.141]
|
@@ -131,6 +131,9 @@ public protocol GymfileProtocol: class {
|
|
131
131
|
/// Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
132
132
|
var skipProfileDetection: Bool { get }
|
133
133
|
|
134
|
+
/// Allows for override of the default `xcodebuild` command
|
135
|
+
var xcodebuildCommand: String { get }
|
136
|
+
|
134
137
|
/// Sets a custom path for Swift Package Manager dependencies
|
135
138
|
var clonedSourcePackagesPath: String? { get }
|
136
139
|
|
@@ -188,6 +191,7 @@ public extension GymfileProtocol {
|
|
188
191
|
var analyzeBuildTime: Bool? { return nil }
|
189
192
|
var xcprettyUtf: Bool? { return nil }
|
190
193
|
var skipProfileDetection: Bool { return false }
|
194
|
+
var xcodebuildCommand: String { return "xcodebuild" }
|
191
195
|
var clonedSourcePackagesPath: String? { return nil }
|
192
196
|
var skipPackageDependenciesResolution: Bool { return false }
|
193
197
|
var disablePackageAutomaticUpdates: Bool { return false }
|
@@ -196,4 +200,4 @@ public extension GymfileProtocol {
|
|
196
200
|
|
197
201
|
// Please don't remove the lines below
|
198
202
|
// They are used to detect outdated files
|
199
|
-
// FastlaneRunnerAPIVersion [0.9.
|
203
|
+
// FastlaneRunnerAPIVersion [0.9.91]
|
@@ -99,7 +99,7 @@ open class LaneFile: NSObject, LaneFileProtocol {
|
|
99
99
|
#if !SWIFT_PACKAGE
|
100
100
|
// When not in SPM environment, we load the Fastfile from its `className()`.
|
101
101
|
loadFastfile()
|
102
|
-
guard let fastfileInstance =
|
102
|
+
guard let fastfileInstance = fastfileInstance as? Fastfile else {
|
103
103
|
let message = "Unable to instantiate class named: \(className())"
|
104
104
|
log(message: message)
|
105
105
|
fatalError(message)
|
data/fastlane/swift/Runner.swift
CHANGED