fastlane 2.195.0 → 2.198.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +80 -80
  3. data/cert/lib/cert/runner.rb +5 -2
  4. data/deliver/lib/assets/ScreenshotsHelp +29 -6
  5. data/deliver/lib/deliver/app_screenshot.rb +5 -4
  6. data/deliver/lib/deliver/runner.rb +1 -1
  7. data/deliver/lib/deliver/upload_screenshots.rb +1 -1
  8. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +12 -6
  9. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -1
  10. data/fastlane/lib/fastlane/actions/download_dsyms.rb +47 -30
  11. data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
  12. data/fastlane/lib/fastlane/actions/get_version_number.rb +6 -2
  13. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -3
  14. data/fastlane/lib/fastlane/actions/notarize.rb +29 -11
  15. data/fastlane/lib/fastlane/actions/set_github_release.rb +11 -5
  16. data/fastlane/lib/fastlane/version.rb +1 -1
  17. data/fastlane/swift/Deliverfile.swift +1 -1
  18. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  19. data/fastlane/swift/Fastlane.swift +57 -17
  20. data/fastlane/swift/Gymfile.swift +1 -1
  21. data/fastlane/swift/GymfileProtocol.swift +5 -1
  22. data/fastlane/swift/LaneFileProtocol.swift +1 -1
  23. data/fastlane/swift/Matchfile.swift +1 -1
  24. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  25. data/fastlane/swift/Precheckfile.swift +1 -1
  26. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  27. data/fastlane/swift/Runner.swift +1 -1
  28. data/fastlane/swift/Scanfile.swift +1 -1
  29. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  30. data/fastlane/swift/Screengrabfile.swift +1 -1
  31. data/fastlane/swift/ScreengrabfileProtocol.swift +3 -3
  32. data/fastlane/swift/Snapshotfile.swift +1 -1
  33. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  34. data/fastlane/swift/formatting/Brewfile.lock.json +27 -22
  35. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +38 -7
  36. data/frameit/lib/frameit/editor.rb +16 -18
  37. data/frameit/lib/frameit/trim_box.rb +6 -0
  38. data/gym/lib/gym/generators/build_command_generator.rb +1 -1
  39. data/gym/lib/gym/options.rb +6 -0
  40. data/match/lib/match/nuke.rb +79 -1
  41. data/match/lib/match/spaceship_ensure.rb +1 -0
  42. data/pem/lib/pem/manager.rb +31 -7
  43. data/pem/lib/pem/options.rb +10 -1
  44. data/pilot/lib/pilot/build_manager.rb +1 -1
  45. data/scan/lib/scan/runner.rb +1 -1
  46. data/screengrab/lib/screengrab/options.rb +2 -2
  47. data/sigh/lib/assets/resign.sh +8 -5
  48. data/snapshot/lib/snapshot/reports_generator.rb +8 -0
  49. data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -2
  50. data/spaceship/lib/spaceship/connect_api/models/build_bundle.rb +59 -0
  51. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +3 -0
  52. data/spaceship/lib/spaceship/connect_api/testflight/.testflight.rb.swp +0 -0
  53. data/spaceship/lib/spaceship/connect_api/token.rb +1 -1
  54. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  55. data/supply/lib/supply/client.rb +3 -3
  56. data/supply/lib/supply/uploader.rb +1 -1
  57. 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, try_early_stapling, print_log, verbose, api_key, compressed_package_path)
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, try_early_stapling, print_log, verbose, api_key, compressed_package_path)
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
- UI.message('Stapling package')
93
- self.staple(package_path, verbose)
93
+ if skip_stapling
94
+ UI.success("Successfully notarized artifact")
95
+ else
96
+ UI.message('Stapling package')
94
97
 
95
- UI.success("Successfully notarized and stapled package")
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
- UI.message('Stapling package')
191
+ if skip_stapling
192
+ UI.success("Successfully notarized artifact#{log_suffix}")
193
+ else
194
+ UI.message('Stapling package')
186
195
 
187
- self.staple(package_path, verbose)
196
+ self.staple(package_path, verbose)
188
197
 
189
- UI.success("Successfully notarized and stapled package#{log_suffix}")
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.error("GitHub responded with #{result[:status]}:#{result[:body]}")
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",
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.195.0'.freeze
2
+ VERSION = '2.198.1'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '1.12.1'.freeze
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.195.0
20
+ // Generated with fastlane 2.198.1
@@ -260,4 +260,4 @@ public extension DeliverfileProtocol {
260
260
 
261
261
  // Please don't remove the lines below
262
262
  // They are used to detect outdated files
263
- // FastlaneRunnerAPIVersion [0.9.84]
263
+ // FastlaneRunnerAPIVersion [0.9.88]
@@ -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 the tests bundle
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 sceenshots to local machine nor open sceenshots summary
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(username: String,
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?] = [usernameArg,
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(development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
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 = RubyCommand.Argument(name: "p12_password", value: p12Password, type: nil)
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?] = [developmentArg,
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(development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
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 = RubyCommand.Argument(name: "p12_password", value: p12Password, type: nil)
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?] = [developmentArg,
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 the tests bundle
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 sceenshots to local machine nor open sceenshots summary
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.Release.Candidate.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
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.137]
13285
+ // FastlaneRunnerAPIVersion [0.9.141]
@@ -17,4 +17,4 @@ public class Gymfile: GymfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.195.0
20
+ // Generated with fastlane 2.198.1
@@ -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.87]
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 = self.fastfileInstance as? Fastfile else {
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)
@@ -17,4 +17,4 @@ public class Matchfile: MatchfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.195.0
20
+ // Generated with fastlane 2.198.1
@@ -192,4 +192,4 @@ public extension MatchfileProtocol {
192
192
 
193
193
  // Please don't remove the lines below
194
194
  // They are used to detect outdated files
195
- // FastlaneRunnerAPIVersion [0.9.81]
195
+ // FastlaneRunnerAPIVersion [0.9.85]
@@ -17,4 +17,4 @@ public class Precheckfile: PrecheckfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.195.0
20
+ // Generated with fastlane 2.198.1
@@ -52,4 +52,4 @@ public extension PrecheckfileProtocol {
52
52
 
53
53
  // Please don't remove the lines below
54
54
  // They are used to detect outdated files
55
- // FastlaneRunnerAPIVersion [0.9.80]
55
+ // FastlaneRunnerAPIVersion [0.9.84]
@@ -132,7 +132,7 @@ extension Runner {
132
132
  }
133
133
 
134
134
  @objc func startSocketComs() {
135
- guard let socketClient = self.socketClient else {
135
+ guard let socketClient = socketClient else {
136
136
  return
137
137
  }
138
138
 
@@ -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.195.0
20
+ // Generated with fastlane 2.198.1
@@ -296,4 +296,4 @@ public extension ScanfileProtocol {
296
296
 
297
297
  // Please don't remove the lines below
298
298
  // They are used to detect outdated files
299
- // FastlaneRunnerAPIVersion [0.9.92]
299
+ // FastlaneRunnerAPIVersion [0.9.96]
@@ -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.195.0
20
+ // Generated with fastlane 2.198.1