fastlane 2.195.0 → 2.198.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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