fastlane 2.177.0 → 2.181.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +83 -70
  4. data/cert/lib/cert/options.rb +1 -0
  5. data/cert/lib/cert/runner.rb +5 -1
  6. data/deliver/lib/deliver/download_screenshots.rb +1 -2
  7. data/deliver/lib/deliver/options.rb +1 -0
  8. data/deliver/lib/deliver/runner.rb +10 -2
  9. data/deliver/lib/deliver/setup.rb +0 -1
  10. data/deliver/lib/deliver/upload_metadata.rb +2 -1
  11. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +6 -1
  12. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +7 -4
  13. data/fastlane/lib/fastlane/actions/backup_file.rb +1 -1
  14. data/fastlane/lib/fastlane/actions/build_app.rb +4 -0
  15. data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +4 -0
  16. data/fastlane/lib/fastlane/actions/clipboard.rb +3 -6
  17. data/fastlane/lib/fastlane/actions/commit_github_file.rb +11 -1
  18. data/fastlane/lib/fastlane/actions/create_xcframework.rb +5 -0
  19. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +2 -1
  20. data/fastlane/lib/fastlane/actions/ensure_env_vars.rb +2 -6
  21. data/fastlane/lib/fastlane/actions/get_github_release.rb +11 -1
  22. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +4 -0
  23. data/fastlane/lib/fastlane/actions/get_version_number.rb +17 -10
  24. data/fastlane/lib/fastlane/actions/git_branch.rb +4 -10
  25. data/fastlane/lib/fastlane/actions/git_tag_exists.rb +4 -0
  26. data/fastlane/lib/fastlane/actions/github_api.rb +2 -1
  27. data/fastlane/lib/fastlane/actions/increment_build_number.rb +8 -1
  28. data/fastlane/lib/fastlane/actions/install_provisioning_profile.rb +4 -0
  29. data/fastlane/lib/fastlane/actions/jira.rb +61 -14
  30. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +1 -0
  31. data/fastlane/lib/fastlane/actions/match_nuke.rb +59 -0
  32. data/fastlane/lib/fastlane/actions/notarize.rb +98 -51
  33. data/fastlane/lib/fastlane/actions/register_device.rb +1 -1
  34. data/fastlane/lib/fastlane/actions/register_devices.rb +1 -1
  35. data/fastlane/lib/fastlane/actions/restore_file.rb +1 -1
  36. data/fastlane/lib/fastlane/actions/set_changelog.rb +1 -1
  37. data/fastlane/lib/fastlane/actions/slack.rb +148 -127
  38. data/fastlane/lib/fastlane/actions/sourcedocs.rb +164 -0
  39. data/fastlane/lib/fastlane/actions/spaceship_logs.rb +1 -1
  40. data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +1 -2
  41. data/fastlane/lib/fastlane/erb_template_helper.rb +7 -1
  42. data/fastlane/lib/fastlane/fast_file.rb +9 -5
  43. data/fastlane/lib/fastlane/fastlane_require.rb +7 -1
  44. data/fastlane/lib/fastlane/helper/git_helper.rb +19 -7
  45. data/fastlane/lib/fastlane/lane_manager.rb +3 -2
  46. data/fastlane/lib/fastlane/plugins/plugin_fetcher.rb +1 -2
  47. data/fastlane/lib/fastlane/plugins/plugin_info_collector.rb +1 -2
  48. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +1 -2
  49. data/fastlane/lib/fastlane/setup/setup.rb +23 -10
  50. data/fastlane/lib/fastlane/swift_fastlane_function.rb +4 -0
  51. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +2 -0
  52. data/fastlane/lib/fastlane/version.rb +1 -1
  53. data/fastlane/swift/Deliverfile.swift +1 -1
  54. data/fastlane/swift/DeliverfileProtocol.swift +3 -3
  55. data/fastlane/swift/Fastlane.swift +550 -328
  56. data/fastlane/swift/Gymfile.swift +1 -1
  57. data/fastlane/swift/GymfileProtocol.swift +1 -1
  58. data/fastlane/swift/LaneFileProtocol.swift +9 -3
  59. data/fastlane/swift/Matchfile.swift +1 -1
  60. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  61. data/fastlane/swift/Precheckfile.swift +1 -1
  62. data/fastlane/swift/PrecheckfileProtocol.swift +3 -3
  63. data/fastlane/swift/RubyCommand.swift +1 -1
  64. data/fastlane/swift/Scanfile.swift +1 -1
  65. data/fastlane/swift/ScanfileProtocol.swift +5 -1
  66. data/fastlane/swift/Screengrabfile.swift +1 -1
  67. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  68. data/fastlane/swift/Snapshotfile.swift +1 -1
  69. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  70. data/fastlane/swift/SocketClient.swift +2 -1
  71. data/fastlane/swift/SocketResponse.swift +4 -2
  72. data/fastlane/swift/formatting/Brewfile.lock.json +18 -16
  73. data/fastlane_core/lib/fastlane_core.rb +22 -21
  74. data/fastlane_core/lib/fastlane_core/build_watcher.rb +50 -9
  75. data/fastlane_core/lib/fastlane_core/clipboard.rb +20 -0
  76. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +5 -3
  77. data/fastlane_core/lib/fastlane_core/helper.rb +24 -1
  78. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +10 -6
  79. data/fastlane_core/lib/fastlane_core/project.rb +3 -14
  80. data/fastlane_core/lib/fastlane_core/queue_worker.rb +2 -2
  81. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +12 -1
  82. data/fastlane_core/lib/fastlane_core/ui/interface.rb +1 -1
  83. data/gym/lib/gym/generators/package_command_generator.rb +4 -0
  84. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +13 -8
  85. data/gym/lib/gym/runner.rb +15 -4
  86. data/match/lib/match/change_password.rb +3 -3
  87. data/match/lib/match/encryption/interface.rb +1 -1
  88. data/match/lib/match/encryption/openssl.rb +2 -2
  89. data/match/lib/match/importer.rb +1 -1
  90. data/match/lib/match/migrate.rb +1 -1
  91. data/match/lib/match/module.rb +1 -0
  92. data/match/lib/match/nuke.rb +1 -1
  93. data/match/lib/match/runner.rb +1 -1
  94. data/match/lib/match/storage/google_cloud_storage.rb +1 -1
  95. data/match/lib/match/storage/s3_storage.rb +1 -1
  96. data/pilot/lib/pilot/build_manager.rb +9 -4
  97. data/pilot/lib/pilot/manager.rb +5 -1
  98. data/pilot/lib/pilot/options.rb +3 -2
  99. data/precheck/lib/precheck/options.rb +1 -0
  100. data/precheck/lib/precheck/runner.rb +5 -1
  101. data/scan/lib/scan/options.rb +10 -5
  102. data/scan/lib/scan/runner.rb +54 -1
  103. data/scan/lib/scan/test_command_generator.rb +10 -8
  104. data/screengrab/lib/screengrab/android_environment.rb +6 -4
  105. data/screengrab/lib/screengrab/runner.rb +1 -1
  106. data/sigh/lib/sigh/download_all.rb +1 -1
  107. data/sigh/lib/sigh/options.rb +1 -0
  108. data/sigh/lib/sigh/runner.rb +5 -1
  109. data/snapshot/lib/assets/SnapshotHelper.swift +1 -1
  110. data/snapshot/lib/snapshot/reports_generator.rb +4 -0
  111. data/spaceship/README.md +2 -12
  112. data/spaceship/lib/spaceship/commands_generator.rb +2 -1
  113. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +1 -1
  114. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +5 -0
  115. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +13 -0
  116. data/spaceship/lib/spaceship/connect_api/token.rb +8 -2
  117. data/spaceship/lib/spaceship/spaceauth_runner.rb +19 -9
  118. data/spaceship/lib/spaceship/tunes/members.rb +1 -1
  119. data/supply/lib/supply/client.rb +3 -1
  120. data/supply/lib/supply/options.rb +2 -2
  121. data/supply/lib/supply/uploader.rb +1 -0
  122. metadata +28 -24
  123. data/gym/lib/gym/.runner.rb.swp +0 -0
@@ -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.177.0
20
+ // Generated with fastlane 2.181.0
@@ -9,7 +9,7 @@ public protocol DeliverfileProtocol: class {
9
9
  var apiKey: [String: Any]? { get }
10
10
 
11
11
  /// Your Apple ID Username
12
- var username: String { get }
12
+ var username: String? { get }
13
13
 
14
14
  /// The bundle identifier of your app
15
15
  var appIdentifier: String? { get }
@@ -192,7 +192,7 @@ public protocol DeliverfileProtocol: class {
192
192
  public extension DeliverfileProtocol {
193
193
  var apiKeyPath: String? { return nil }
194
194
  var apiKey: [String: Any]? { return nil }
195
- var username: String { return "" }
195
+ var username: String? { return nil }
196
196
  var appIdentifier: String? { return nil }
197
197
  var appVersion: String? { return nil }
198
198
  var ipa: String? { return nil }
@@ -256,4 +256,4 @@ public extension DeliverfileProtocol {
256
256
 
257
257
  // Please don't remove the lines below
258
258
  // They are used to detect outdated files
259
- // FastlaneRunnerAPIVersion [0.9.60]
259
+ // FastlaneRunnerAPIVersion [0.9.65]
@@ -119,7 +119,7 @@ public func appStoreBuildNumber(apiKeyPath: String? = nil,
119
119
  apiKey: [String: Any]? = nil,
120
120
  initialBuildNumber: Any,
121
121
  appIdentifier: String,
122
- username: String,
122
+ username: String? = nil,
123
123
  teamId: Any? = nil,
124
124
  live: Bool = true,
125
125
  version: String? = nil,
@@ -552,7 +552,7 @@ public func appledoc(input: Any,
552
552
  */
553
553
  public func appstore(apiKeyPath: String? = nil,
554
554
  apiKey: [String: Any]? = nil,
555
- username: String,
555
+ username: String? = nil,
556
556
  appIdentifier: String? = nil,
557
557
  appVersion: String? = nil,
558
558
  ipa: String? = nil,
@@ -1006,53 +1006,53 @@ public func buildAndroidApp(task: String? = nil,
1006
1006
 
1007
1007
  More information: https://fastlane.tools/gym
1008
1008
  */
1009
- public func buildApp(workspace: String? = nil,
1010
- project: String? = nil,
1011
- scheme: String? = nil,
1012
- clean: Bool = false,
1013
- outputDirectory: String = ".",
1014
- outputName: String? = nil,
1015
- configuration: String? = nil,
1016
- silent: Bool = false,
1017
- codesigningIdentity: String? = nil,
1018
- skipPackageIpa: Bool = false,
1019
- skipPackagePkg: Bool = false,
1020
- includeSymbols: Bool? = nil,
1021
- includeBitcode: Bool? = nil,
1022
- exportMethod: String? = nil,
1023
- exportOptions: [String: Any]? = nil,
1024
- exportXcargs: String? = nil,
1025
- skipBuildArchive: Bool? = nil,
1026
- skipArchive: Bool? = nil,
1027
- skipCodesigning: Bool? = nil,
1028
- catalystPlatform: String? = nil,
1029
- installerCertName: String? = nil,
1030
- buildPath: String? = nil,
1031
- archivePath: String? = nil,
1032
- derivedDataPath: String? = nil,
1033
- resultBundle: Bool = false,
1034
- resultBundlePath: String? = nil,
1035
- buildlogPath: String = "~/Library/Logs/gym",
1036
- sdk: String? = nil,
1037
- toolchain: String? = nil,
1038
- destination: String? = nil,
1039
- exportTeamId: String? = nil,
1040
- xcargs: String? = nil,
1041
- xcconfig: String? = nil,
1042
- suppressXcodeOutput: Bool? = nil,
1043
- disableXcpretty: Bool? = nil,
1044
- xcprettyTestFormat: Bool? = nil,
1045
- xcprettyFormatter: String? = nil,
1046
- xcprettyReportJunit: String? = nil,
1047
- xcprettyReportHtml: String? = nil,
1048
- xcprettyReportJson: String? = nil,
1049
- analyzeBuildTime: Bool? = nil,
1050
- xcprettyUtf: Bool? = nil,
1051
- skipProfileDetection: Bool = false,
1052
- clonedSourcePackagesPath: String? = nil,
1053
- skipPackageDependenciesResolution: Bool = false,
1054
- disablePackageAutomaticUpdates: Bool = false,
1055
- useSystemScm: Bool = false)
1009
+ @discardableResult public func buildApp(workspace: String? = nil,
1010
+ project: String? = nil,
1011
+ scheme: String? = nil,
1012
+ clean: Bool = false,
1013
+ outputDirectory: String = ".",
1014
+ outputName: String? = nil,
1015
+ configuration: String? = nil,
1016
+ silent: Bool = false,
1017
+ codesigningIdentity: String? = nil,
1018
+ skipPackageIpa: Bool = false,
1019
+ skipPackagePkg: Bool = false,
1020
+ includeSymbols: Bool? = nil,
1021
+ includeBitcode: Bool? = nil,
1022
+ exportMethod: String? = nil,
1023
+ exportOptions: [String: Any]? = nil,
1024
+ exportXcargs: String? = nil,
1025
+ skipBuildArchive: Bool? = nil,
1026
+ skipArchive: Bool? = nil,
1027
+ skipCodesigning: Bool? = nil,
1028
+ catalystPlatform: String? = nil,
1029
+ installerCertName: String? = nil,
1030
+ buildPath: String? = nil,
1031
+ archivePath: String? = nil,
1032
+ derivedDataPath: String? = nil,
1033
+ resultBundle: Bool = false,
1034
+ resultBundlePath: String? = nil,
1035
+ buildlogPath: String = "~/Library/Logs/gym",
1036
+ sdk: String? = nil,
1037
+ toolchain: String? = nil,
1038
+ destination: String? = nil,
1039
+ exportTeamId: String? = nil,
1040
+ xcargs: String? = nil,
1041
+ xcconfig: String? = nil,
1042
+ suppressXcodeOutput: Bool? = nil,
1043
+ disableXcpretty: Bool? = nil,
1044
+ xcprettyTestFormat: Bool? = nil,
1045
+ xcprettyFormatter: String? = nil,
1046
+ xcprettyReportJunit: String? = nil,
1047
+ xcprettyReportHtml: String? = nil,
1048
+ xcprettyReportJson: String? = nil,
1049
+ analyzeBuildTime: Bool? = nil,
1050
+ xcprettyUtf: Bool? = nil,
1051
+ skipProfileDetection: Bool = false,
1052
+ clonedSourcePackagesPath: String? = nil,
1053
+ skipPackageDependenciesResolution: Bool = false,
1054
+ disablePackageAutomaticUpdates: Bool = false,
1055
+ useSystemScm: Bool = false) -> String
1056
1056
  {
1057
1057
  let command = RubyCommand(commandID: "", methodName: "build_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1058
1058
  RubyCommand.Argument(name: "project", value: project),
@@ -1101,7 +1101,7 @@ public func buildApp(workspace: String? = nil,
1101
1101
  RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
1102
1102
  RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
1103
1103
  RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
1104
- _ = runner.executeCommand(command)
1104
+ return runner.executeCommand(command)
1105
1105
  }
1106
1106
 
1107
1107
  /**
@@ -1157,50 +1157,50 @@ public func buildApp(workspace: String? = nil,
1157
1157
 
1158
1158
  More information: https://fastlane.tools/gym
1159
1159
  */
1160
- public func buildIosApp(workspace: String? = nil,
1161
- project: String? = nil,
1162
- scheme: String? = nil,
1163
- clean: Bool = false,
1164
- outputDirectory: String = ".",
1165
- outputName: String? = nil,
1166
- configuration: String? = nil,
1167
- silent: Bool = false,
1168
- codesigningIdentity: String? = nil,
1169
- skipPackageIpa: Bool = false,
1170
- includeSymbols: Bool? = nil,
1171
- includeBitcode: Bool? = nil,
1172
- exportMethod: String? = nil,
1173
- exportOptions: [String: Any]? = nil,
1174
- exportXcargs: String? = nil,
1175
- skipBuildArchive: Bool? = nil,
1176
- skipArchive: Bool? = nil,
1177
- skipCodesigning: Bool? = nil,
1178
- buildPath: String? = nil,
1179
- archivePath: String? = nil,
1180
- derivedDataPath: String? = nil,
1181
- resultBundle: Bool = false,
1182
- resultBundlePath: String? = nil,
1183
- buildlogPath: String = "~/Library/Logs/gym",
1184
- sdk: String? = nil,
1185
- toolchain: String? = nil,
1186
- destination: String? = nil,
1187
- exportTeamId: String? = nil,
1188
- xcargs: String? = nil,
1189
- xcconfig: String? = nil,
1190
- suppressXcodeOutput: Bool? = nil,
1191
- disableXcpretty: Bool? = nil,
1192
- xcprettyTestFormat: Bool? = nil,
1193
- xcprettyFormatter: String? = nil,
1194
- xcprettyReportJunit: String? = nil,
1195
- xcprettyReportHtml: String? = nil,
1196
- xcprettyReportJson: String? = nil,
1197
- analyzeBuildTime: Bool? = nil,
1198
- xcprettyUtf: Bool? = nil,
1199
- skipProfileDetection: Bool = false,
1200
- clonedSourcePackagesPath: String? = nil,
1201
- skipPackageDependenciesResolution: Bool = false,
1202
- disablePackageAutomaticUpdates: Bool = false,
1203
- useSystemScm: Bool = false)
1160
+ @discardableResult public func buildIosApp(workspace: String? = nil,
1161
+ project: String? = nil,
1162
+ scheme: String? = nil,
1163
+ clean: Bool = false,
1164
+ outputDirectory: String = ".",
1165
+ outputName: String? = nil,
1166
+ configuration: String? = nil,
1167
+ silent: Bool = false,
1168
+ codesigningIdentity: String? = nil,
1169
+ skipPackageIpa: Bool = false,
1170
+ includeSymbols: Bool? = nil,
1171
+ includeBitcode: Bool? = nil,
1172
+ exportMethod: String? = nil,
1173
+ exportOptions: [String: Any]? = nil,
1174
+ exportXcargs: String? = nil,
1175
+ skipBuildArchive: Bool? = nil,
1176
+ skipArchive: Bool? = nil,
1177
+ skipCodesigning: Bool? = nil,
1178
+ buildPath: String? = nil,
1179
+ archivePath: String? = nil,
1180
+ derivedDataPath: String? = nil,
1181
+ resultBundle: Bool = false,
1182
+ resultBundlePath: String? = nil,
1183
+ buildlogPath: String = "~/Library/Logs/gym",
1184
+ sdk: String? = nil,
1185
+ toolchain: String? = nil,
1186
+ destination: String? = nil,
1187
+ exportTeamId: String? = nil,
1188
+ xcargs: String? = nil,
1189
+ xcconfig: String? = nil,
1190
+ suppressXcodeOutput: Bool? = nil,
1191
+ disableXcpretty: Bool? = nil,
1192
+ xcprettyTestFormat: Bool? = nil,
1193
+ xcprettyFormatter: String? = nil,
1194
+ xcprettyReportJunit: String? = nil,
1195
+ xcprettyReportHtml: String? = nil,
1196
+ xcprettyReportJson: String? = nil,
1197
+ analyzeBuildTime: Bool? = nil,
1198
+ xcprettyUtf: Bool? = nil,
1199
+ skipProfileDetection: Bool = false,
1200
+ clonedSourcePackagesPath: String? = nil,
1201
+ skipPackageDependenciesResolution: Bool = false,
1202
+ disablePackageAutomaticUpdates: Bool = false,
1203
+ useSystemScm: Bool = false) -> String
1204
1204
  {
1205
1205
  let command = RubyCommand(commandID: "", methodName: "build_ios_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1206
1206
  RubyCommand.Argument(name: "project", value: project),
@@ -1246,7 +1246,7 @@ public func buildIosApp(workspace: String? = nil,
1246
1246
  RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
1247
1247
  RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
1248
1248
  RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
1249
- _ = runner.executeCommand(command)
1249
+ return runner.executeCommand(command)
1250
1250
  }
1251
1251
 
1252
1252
  /**
@@ -1303,51 +1303,51 @@ public func buildIosApp(workspace: String? = nil,
1303
1303
 
1304
1304
  More information: https://fastlane.tools/gym
1305
1305
  */
1306
- public func buildMacApp(workspace: String? = nil,
1307
- project: String? = nil,
1308
- scheme: String? = nil,
1309
- clean: Bool = false,
1310
- outputDirectory: String = ".",
1311
- outputName: String? = nil,
1312
- configuration: String? = nil,
1313
- silent: Bool = false,
1314
- codesigningIdentity: String? = nil,
1315
- skipPackagePkg: Bool = false,
1316
- includeSymbols: Bool? = nil,
1317
- includeBitcode: Bool? = nil,
1318
- exportMethod: String? = nil,
1319
- exportOptions: [String: Any]? = nil,
1320
- exportXcargs: String? = nil,
1321
- skipBuildArchive: Bool? = nil,
1322
- skipArchive: Bool? = nil,
1323
- skipCodesigning: Bool? = nil,
1324
- installerCertName: String? = nil,
1325
- buildPath: String? = nil,
1326
- archivePath: String? = nil,
1327
- derivedDataPath: String? = nil,
1328
- resultBundle: Bool = false,
1329
- resultBundlePath: String? = nil,
1330
- buildlogPath: String = "~/Library/Logs/gym",
1331
- sdk: String? = nil,
1332
- toolchain: String? = nil,
1333
- destination: String? = nil,
1334
- exportTeamId: String? = nil,
1335
- xcargs: String? = nil,
1336
- xcconfig: String? = nil,
1337
- suppressXcodeOutput: Bool? = nil,
1338
- disableXcpretty: Bool? = nil,
1339
- xcprettyTestFormat: Bool? = nil,
1340
- xcprettyFormatter: String? = nil,
1341
- xcprettyReportJunit: String? = nil,
1342
- xcprettyReportHtml: String? = nil,
1343
- xcprettyReportJson: String? = nil,
1344
- analyzeBuildTime: Bool? = nil,
1345
- xcprettyUtf: Bool? = nil,
1346
- skipProfileDetection: Bool = false,
1347
- clonedSourcePackagesPath: String? = nil,
1348
- skipPackageDependenciesResolution: Bool = false,
1349
- disablePackageAutomaticUpdates: Bool = false,
1350
- useSystemScm: Bool = false)
1306
+ @discardableResult public func buildMacApp(workspace: String? = nil,
1307
+ project: String? = nil,
1308
+ scheme: String? = nil,
1309
+ clean: Bool = false,
1310
+ outputDirectory: String = ".",
1311
+ outputName: String? = nil,
1312
+ configuration: String? = nil,
1313
+ silent: Bool = false,
1314
+ codesigningIdentity: String? = nil,
1315
+ skipPackagePkg: Bool = false,
1316
+ includeSymbols: Bool? = nil,
1317
+ includeBitcode: Bool? = nil,
1318
+ exportMethod: String? = nil,
1319
+ exportOptions: [String: Any]? = nil,
1320
+ exportXcargs: String? = nil,
1321
+ skipBuildArchive: Bool? = nil,
1322
+ skipArchive: Bool? = nil,
1323
+ skipCodesigning: Bool? = nil,
1324
+ installerCertName: String? = nil,
1325
+ buildPath: String? = nil,
1326
+ archivePath: String? = nil,
1327
+ derivedDataPath: String? = nil,
1328
+ resultBundle: Bool = false,
1329
+ resultBundlePath: String? = nil,
1330
+ buildlogPath: String = "~/Library/Logs/gym",
1331
+ sdk: String? = nil,
1332
+ toolchain: String? = nil,
1333
+ destination: String? = nil,
1334
+ exportTeamId: String? = nil,
1335
+ xcargs: String? = nil,
1336
+ xcconfig: String? = nil,
1337
+ suppressXcodeOutput: Bool? = nil,
1338
+ disableXcpretty: Bool? = nil,
1339
+ xcprettyTestFormat: Bool? = nil,
1340
+ xcprettyFormatter: String? = nil,
1341
+ xcprettyReportJunit: String? = nil,
1342
+ xcprettyReportHtml: String? = nil,
1343
+ xcprettyReportJson: String? = nil,
1344
+ analyzeBuildTime: Bool? = nil,
1345
+ xcprettyUtf: Bool? = nil,
1346
+ skipProfileDetection: Bool = false,
1347
+ clonedSourcePackagesPath: String? = nil,
1348
+ skipPackageDependenciesResolution: Bool = false,
1349
+ disablePackageAutomaticUpdates: Bool = false,
1350
+ useSystemScm: Bool = false) -> String
1351
1351
  {
1352
1352
  let command = RubyCommand(commandID: "", methodName: "build_mac_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1353
1353
  RubyCommand.Argument(name: "project", value: project),
@@ -1394,7 +1394,7 @@ public func buildMacApp(workspace: String? = nil,
1394
1394
  RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
1395
1395
  RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
1396
1396
  RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
1397
- _ = runner.executeCommand(command)
1397
+ return runner.executeCommand(command)
1398
1398
  }
1399
1399
 
1400
1400
  /**
@@ -1942,7 +1942,7 @@ public func cert(development: Bool = false,
1942
1942
  generateAppleCerts: Bool = true,
1943
1943
  apiKeyPath: String? = nil,
1944
1944
  apiKey: [String: Any]? = nil,
1945
- username: String,
1945
+ username: String? = nil,
1946
1946
  teamId: String? = nil,
1947
1947
  teamName: String? = nil,
1948
1948
  filename: String? = nil,
@@ -2068,26 +2068,26 @@ public func chatwork(apiToken: String,
2068
2068
 
2069
2069
  More information: https://fastlane.tools/precheck
2070
2070
  */
2071
- public func checkAppStoreMetadata(apiKeyPath: String? = nil,
2072
- apiKey: [String: Any]? = nil,
2073
- appIdentifier: String,
2074
- username: String,
2075
- teamId: String? = nil,
2076
- teamName: String? = nil,
2077
- platform: String = "ios",
2078
- defaultRuleLevel: Any = "error",
2079
- includeInAppPurchases: Bool = true,
2080
- useLive: Bool = false,
2081
- negativeAppleSentiment: Any? = nil,
2082
- placeholderText: Any? = nil,
2083
- otherPlatforms: Any? = nil,
2084
- futureFunctionality: Any? = nil,
2085
- testWords: Any? = nil,
2086
- curseWords: Any? = nil,
2087
- freeStuffInIap: Any? = nil,
2088
- customText: Any? = nil,
2089
- copyrightDate: Any? = nil,
2090
- unreachableUrls: Any? = nil)
2071
+ @discardableResult public func checkAppStoreMetadata(apiKeyPath: String? = nil,
2072
+ apiKey: [String: Any]? = nil,
2073
+ appIdentifier: String,
2074
+ username: String? = nil,
2075
+ teamId: String? = nil,
2076
+ teamName: String? = nil,
2077
+ platform: String = "ios",
2078
+ defaultRuleLevel: Any = "error",
2079
+ includeInAppPurchases: Bool = true,
2080
+ useLive: Bool = false,
2081
+ negativeAppleSentiment: Any? = nil,
2082
+ placeholderText: Any? = nil,
2083
+ otherPlatforms: Any? = nil,
2084
+ futureFunctionality: Any? = nil,
2085
+ testWords: Any? = nil,
2086
+ curseWords: Any? = nil,
2087
+ freeStuffInIap: Any? = nil,
2088
+ customText: Any? = nil,
2089
+ copyrightDate: Any? = nil,
2090
+ unreachableUrls: Any? = nil) -> Bool
2091
2091
  {
2092
2092
  let command = RubyCommand(commandID: "", methodName: "check_app_store_metadata", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
2093
2093
  RubyCommand.Argument(name: "api_key", value: apiKey),
@@ -2109,7 +2109,7 @@ public func checkAppStoreMetadata(apiKeyPath: String? = nil,
2109
2109
  RubyCommand.Argument(name: "custom_text", value: customText),
2110
2110
  RubyCommand.Argument(name: "copyright_date", value: copyrightDate),
2111
2111
  RubyCommand.Argument(name: "unreachable_urls", value: unreachableUrls)])
2112
- _ = runner.executeCommand(command)
2112
+ return parseBool(fromString: runner.executeCommand(command))
2113
2113
  }
2114
2114
 
2115
2115
  /**
@@ -2250,6 +2250,7 @@ public func cocoapods(repoUpdate: Bool = false,
2250
2250
  - repositoryName: The path to your repo, e.g. 'fastlane/fastlane'
2251
2251
  - serverUrl: The server url. e.g. 'https://your.internal.github.host/api/v3' (Default: 'https://api.github.com')
2252
2252
  - apiToken: Personal API Token for GitHub - generate one at https://github.com/settings/tokens
2253
+ - apiBearer: Use a Bearer authorization token. Usually generated by Github Apps, e.g. GitHub Actions GITHUB_TOKEN environment variable
2253
2254
  - branch: The branch that the file should be committed on (default: master)
2254
2255
  - path: The relative path to your file from project root e.g. assets/my_app.xcarchive
2255
2256
  - message: The commit message. Defaults to the file name
@@ -2264,7 +2265,8 @@ public func cocoapods(repoUpdate: Bool = false,
2264
2265
  */
2265
2266
  @discardableResult public func commitGithubFile(repositoryName: String,
2266
2267
  serverUrl: String = "https://api.github.com",
2267
- apiToken: String,
2268
+ apiToken: String? = nil,
2269
+ apiBearer: String? = nil,
2268
2270
  branch: String = "master",
2269
2271
  path: String,
2270
2272
  message: String? = nil,
@@ -2273,6 +2275,7 @@ public func cocoapods(repoUpdate: Bool = false,
2273
2275
  let command = RubyCommand(commandID: "", methodName: "commit_github_file", className: nil, args: [RubyCommand.Argument(name: "repository_name", value: repositoryName),
2274
2276
  RubyCommand.Argument(name: "server_url", value: serverUrl),
2275
2277
  RubyCommand.Argument(name: "api_token", value: apiToken),
2278
+ RubyCommand.Argument(name: "api_bearer", value: apiBearer),
2276
2279
  RubyCommand.Argument(name: "branch", value: branch),
2277
2280
  RubyCommand.Argument(name: "path", value: path),
2278
2281
  RubyCommand.Argument(name: "message", value: message),
@@ -2777,7 +2780,7 @@ public func deleteKeychain(name: String? = nil,
2777
2780
  */
2778
2781
  public func deliver(apiKeyPath: Any? = deliverfile.apiKeyPath,
2779
2782
  apiKey: [String: Any]? = deliverfile.apiKey,
2780
- username: Any = deliverfile.username,
2783
+ username: Any? = deliverfile.username,
2781
2784
  appIdentifier: Any? = deliverfile.appIdentifier,
2782
2785
  appVersion: Any? = deliverfile.appVersion,
2783
2786
  ipa: Any? = deliverfile.ipa,
@@ -3501,7 +3504,7 @@ public func getCertificates(development: Bool = false,
3501
3504
  generateAppleCerts: Bool = true,
3502
3505
  apiKeyPath: String? = nil,
3503
3506
  apiKey: [String: Any]? = nil,
3504
- username: String,
3507
+ username: String? = nil,
3505
3508
  teamId: String? = nil,
3506
3509
  teamName: String? = nil,
3507
3510
  filename: String? = nil,
@@ -3537,6 +3540,7 @@ public func getCertificates(development: Bool = false,
3537
3540
  - serverUrl: The server url. e.g. 'https://your.github.server/api/v3' (Default: 'https://api.github.com')
3538
3541
  - version: The version tag of the release to check
3539
3542
  - apiToken: GitHub Personal Token (required for private repositories)
3543
+ - apiBearer: Use a Bearer authorization token. Usually generated by Github Apps, e.g. GitHub Actions GITHUB_TOKEN environment variable
3540
3544
 
3541
3545
  This will return all information about a release. For example:|
3542
3546
  |
@@ -3584,12 +3588,14 @@ public func getCertificates(development: Bool = false,
3584
3588
  public func getGithubRelease(url: String,
3585
3589
  serverUrl: String = "https://api.github.com",
3586
3590
  version: String,
3587
- apiToken: String? = nil)
3591
+ apiToken: String? = nil,
3592
+ apiBearer: String? = nil)
3588
3593
  {
3589
3594
  let command = RubyCommand(commandID: "", methodName: "get_github_release", className: nil, args: [RubyCommand.Argument(name: "url", value: url),
3590
3595
  RubyCommand.Argument(name: "server_url", value: serverUrl),
3591
3596
  RubyCommand.Argument(name: "version", value: version),
3592
- RubyCommand.Argument(name: "api_token", value: apiToken)])
3597
+ RubyCommand.Argument(name: "api_token", value: apiToken),
3598
+ RubyCommand.Argument(name: "api_bearer", value: apiBearer)])
3593
3599
  _ = runner.executeCommand(command)
3594
3600
  }
3595
3601
 
@@ -3683,29 +3689,29 @@ public func getManagedPlayStorePublishingRights(jsonKey: String? = nil,
3683
3689
 
3684
3690
  **Note**: It is recommended to use [match](https://docs.fastlane.tools/actions/match/) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your provisioning profiles. Use _sigh_ directly only if you want full control over what's going on and know more about codesigning.
3685
3691
  */
3686
- public func getProvisioningProfile(adhoc: Bool = false,
3687
- developerId: Bool = false,
3688
- development: Bool = false,
3689
- skipInstall: Bool = false,
3690
- force: Bool = false,
3691
- appIdentifier: String,
3692
- apiKeyPath: String? = nil,
3693
- apiKey: [String: Any]? = nil,
3694
- username: String,
3695
- teamId: String? = nil,
3696
- teamName: String? = nil,
3697
- provisioningName: String? = nil,
3698
- ignoreProfilesWithDifferentName: Bool = false,
3699
- outputPath: String = ".",
3700
- certId: String? = nil,
3701
- certOwnerName: String? = nil,
3702
- filename: String? = nil,
3703
- skipFetchProfiles: Bool = false,
3704
- skipCertificateVerification: Bool = false,
3705
- platform: Any = "ios",
3706
- readonly: Bool = false,
3707
- templateName: String? = nil,
3708
- failOnNameTaken: Bool = false)
3692
+ @discardableResult public func getProvisioningProfile(adhoc: Bool = false,
3693
+ developerId: Bool = false,
3694
+ development: Bool = false,
3695
+ skipInstall: Bool = false,
3696
+ force: Bool = false,
3697
+ appIdentifier: String,
3698
+ apiKeyPath: String? = nil,
3699
+ apiKey: [String: Any]? = nil,
3700
+ username: String? = nil,
3701
+ teamId: String? = nil,
3702
+ teamName: String? = nil,
3703
+ provisioningName: String? = nil,
3704
+ ignoreProfilesWithDifferentName: Bool = false,
3705
+ outputPath: String = ".",
3706
+ certId: String? = nil,
3707
+ certOwnerName: String? = nil,
3708
+ filename: String? = nil,
3709
+ skipFetchProfiles: Bool = false,
3710
+ skipCertificateVerification: Bool = false,
3711
+ platform: Any = "ios",
3712
+ readonly: Bool = false,
3713
+ templateName: String? = nil,
3714
+ failOnNameTaken: Bool = false) -> String
3709
3715
  {
3710
3716
  let command = RubyCommand(commandID: "", methodName: "get_provisioning_profile", className: nil, args: [RubyCommand.Argument(name: "adhoc", value: adhoc),
3711
3717
  RubyCommand.Argument(name: "developer_id", value: developerId),
@@ -3730,7 +3736,7 @@ public func getProvisioningProfile(adhoc: Bool = false,
3730
3736
  RubyCommand.Argument(name: "readonly", value: readonly),
3731
3737
  RubyCommand.Argument(name: "template_name", value: templateName),
3732
3738
  RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken)])
3733
- _ = runner.executeCommand(command)
3739
+ return runner.executeCommand(command)
3734
3740
  }
3735
3741
 
3736
3742
  /**
@@ -3800,7 +3806,7 @@ public func getPushCertificate(development: Bool = false,
3800
3806
  Get the version number of your project
3801
3807
 
3802
3808
  - parameters:
3803
- - xcodeproj: Path to the main Xcode project to read version number from, optional. By default will use the first Xcode project found within the project root directory
3809
+ - xcodeproj: Path to the Xcode project to read version number from, or its containing directory, optional. If ommitted, or if a directory is passed instead, it will use the first Xcode project found within the given directory, or the project root directory if none is passed
3804
3810
  - target: Target name, optional. Will be needed if you have more than one non-test target to avoid being prompted to select one
3805
3811
  - 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
3806
3812
 
@@ -3837,7 +3843,7 @@ public func gitAdd(path: Any? = nil,
3837
3843
  /**
3838
3844
  Returns the name of the current git branch, possibly as managed by CI ENV vars
3839
3845
 
3840
- If no branch could be found, this action will return an empty string
3846
+ If no branch could be found, this action will return an empty string. This is a wrapper for the internal action Actions.git_branch
3841
3847
  */
3842
3848
  @discardableResult public func gitBranch() -> String {
3843
3849
  let command = RubyCommand(commandID: "", methodName: "git_branch", className: nil, args: [])
@@ -3905,14 +3911,14 @@ public func gitSubmoduleUpdate(recursive: Bool = false,
3905
3911
 
3906
3912
  - returns: Boolean value whether the tag exists or not
3907
3913
  */
3908
- public func gitTagExists(tag: String,
3909
- remote: Bool = false,
3910
- remoteName: String = "origin")
3914
+ @discardableResult public func gitTagExists(tag: String,
3915
+ remote: Bool = false,
3916
+ remoteName: String = "origin") -> Bool
3911
3917
  {
3912
3918
  let command = RubyCommand(commandID: "", methodName: "git_tag_exists", className: nil, args: [RubyCommand.Argument(name: "tag", value: tag),
3913
3919
  RubyCommand.Argument(name: "remote", value: remote),
3914
3920
  RubyCommand.Argument(name: "remote_name", value: remoteName)])
3915
- _ = runner.executeCommand(command)
3921
+ return parseBool(fromString: runner.executeCommand(command))
3916
3922
  }
3917
3923
 
3918
3924
  /**
@@ -4142,53 +4148,53 @@ public func gradle(task: String? = nil,
4142
4148
 
4143
4149
  More information: https://fastlane.tools/gym
4144
4150
  */
4145
- public func gym(workspace: Any? = gymfile.workspace,
4146
- project: Any? = gymfile.project,
4147
- scheme: Any? = gymfile.scheme,
4148
- clean: Bool = gymfile.clean,
4149
- outputDirectory: Any = gymfile.outputDirectory,
4150
- outputName: Any? = gymfile.outputName,
4151
- configuration: Any? = gymfile.configuration,
4152
- silent: Bool = gymfile.silent,
4153
- codesigningIdentity: Any? = gymfile.codesigningIdentity,
4154
- skipPackageIpa: Bool = gymfile.skipPackageIpa,
4155
- skipPackagePkg: Bool = gymfile.skipPackagePkg,
4156
- includeSymbols: Bool? = gymfile.includeSymbols,
4157
- includeBitcode: Bool? = gymfile.includeBitcode,
4158
- exportMethod: Any? = gymfile.exportMethod,
4159
- exportOptions: [String: Any]? = gymfile.exportOptions,
4160
- exportXcargs: Any? = gymfile.exportXcargs,
4161
- skipBuildArchive: Bool? = gymfile.skipBuildArchive,
4162
- skipArchive: Bool? = gymfile.skipArchive,
4163
- skipCodesigning: Bool? = gymfile.skipCodesigning,
4164
- catalystPlatform: Any? = gymfile.catalystPlatform,
4165
- installerCertName: Any? = gymfile.installerCertName,
4166
- buildPath: Any? = gymfile.buildPath,
4167
- archivePath: Any? = gymfile.archivePath,
4168
- derivedDataPath: Any? = gymfile.derivedDataPath,
4169
- resultBundle: Bool = gymfile.resultBundle,
4170
- resultBundlePath: Any? = gymfile.resultBundlePath,
4171
- buildlogPath: Any = gymfile.buildlogPath,
4172
- sdk: Any? = gymfile.sdk,
4173
- toolchain: Any? = gymfile.toolchain,
4174
- destination: Any? = gymfile.destination,
4175
- exportTeamId: Any? = gymfile.exportTeamId,
4176
- xcargs: Any? = gymfile.xcargs,
4177
- xcconfig: Any? = gymfile.xcconfig,
4178
- suppressXcodeOutput: Bool? = gymfile.suppressXcodeOutput,
4179
- disableXcpretty: Bool? = gymfile.disableXcpretty,
4180
- xcprettyTestFormat: Bool? = gymfile.xcprettyTestFormat,
4181
- xcprettyFormatter: Any? = gymfile.xcprettyFormatter,
4182
- xcprettyReportJunit: Any? = gymfile.xcprettyReportJunit,
4183
- xcprettyReportHtml: Any? = gymfile.xcprettyReportHtml,
4184
- xcprettyReportJson: Any? = gymfile.xcprettyReportJson,
4185
- analyzeBuildTime: Bool? = gymfile.analyzeBuildTime,
4186
- xcprettyUtf: Bool? = gymfile.xcprettyUtf,
4187
- skipProfileDetection: Bool = gymfile.skipProfileDetection,
4188
- clonedSourcePackagesPath: Any? = gymfile.clonedSourcePackagesPath,
4189
- skipPackageDependenciesResolution: Bool = gymfile.skipPackageDependenciesResolution,
4190
- disablePackageAutomaticUpdates: Bool = gymfile.disablePackageAutomaticUpdates,
4191
- useSystemScm: Bool = gymfile.useSystemScm)
4151
+ @discardableResult public func gym(workspace: Any? = gymfile.workspace,
4152
+ project: Any? = gymfile.project,
4153
+ scheme: Any? = gymfile.scheme,
4154
+ clean: Bool = gymfile.clean,
4155
+ outputDirectory: Any = gymfile.outputDirectory,
4156
+ outputName: Any? = gymfile.outputName,
4157
+ configuration: Any? = gymfile.configuration,
4158
+ silent: Bool = gymfile.silent,
4159
+ codesigningIdentity: Any? = gymfile.codesigningIdentity,
4160
+ skipPackageIpa: Bool = gymfile.skipPackageIpa,
4161
+ skipPackagePkg: Bool = gymfile.skipPackagePkg,
4162
+ includeSymbols: Bool? = gymfile.includeSymbols,
4163
+ includeBitcode: Bool? = gymfile.includeBitcode,
4164
+ exportMethod: Any? = gymfile.exportMethod,
4165
+ exportOptions: [String: Any]? = gymfile.exportOptions,
4166
+ exportXcargs: Any? = gymfile.exportXcargs,
4167
+ skipBuildArchive: Bool? = gymfile.skipBuildArchive,
4168
+ skipArchive: Bool? = gymfile.skipArchive,
4169
+ skipCodesigning: Bool? = gymfile.skipCodesigning,
4170
+ catalystPlatform: Any? = gymfile.catalystPlatform,
4171
+ installerCertName: Any? = gymfile.installerCertName,
4172
+ buildPath: Any? = gymfile.buildPath,
4173
+ archivePath: Any? = gymfile.archivePath,
4174
+ derivedDataPath: Any? = gymfile.derivedDataPath,
4175
+ resultBundle: Bool = gymfile.resultBundle,
4176
+ resultBundlePath: Any? = gymfile.resultBundlePath,
4177
+ buildlogPath: Any = gymfile.buildlogPath,
4178
+ sdk: Any? = gymfile.sdk,
4179
+ toolchain: Any? = gymfile.toolchain,
4180
+ destination: Any? = gymfile.destination,
4181
+ exportTeamId: Any? = gymfile.exportTeamId,
4182
+ xcargs: Any? = gymfile.xcargs,
4183
+ xcconfig: Any? = gymfile.xcconfig,
4184
+ suppressXcodeOutput: Bool? = gymfile.suppressXcodeOutput,
4185
+ disableXcpretty: Bool? = gymfile.disableXcpretty,
4186
+ xcprettyTestFormat: Bool? = gymfile.xcprettyTestFormat,
4187
+ xcprettyFormatter: Any? = gymfile.xcprettyFormatter,
4188
+ xcprettyReportJunit: Any? = gymfile.xcprettyReportJunit,
4189
+ xcprettyReportHtml: Any? = gymfile.xcprettyReportHtml,
4190
+ xcprettyReportJson: Any? = gymfile.xcprettyReportJson,
4191
+ analyzeBuildTime: Bool? = gymfile.analyzeBuildTime,
4192
+ xcprettyUtf: Bool? = gymfile.xcprettyUtf,
4193
+ skipProfileDetection: Bool = gymfile.skipProfileDetection,
4194
+ clonedSourcePackagesPath: Any? = gymfile.clonedSourcePackagesPath,
4195
+ skipPackageDependenciesResolution: Bool = gymfile.skipPackageDependenciesResolution,
4196
+ disablePackageAutomaticUpdates: Bool = gymfile.disablePackageAutomaticUpdates,
4197
+ useSystemScm: Bool = gymfile.useSystemScm) -> String
4192
4198
  {
4193
4199
  let command = RubyCommand(commandID: "", methodName: "gym", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
4194
4200
  RubyCommand.Argument(name: "project", value: project),
@@ -4237,7 +4243,7 @@ public func gym(workspace: Any? = gymfile.workspace,
4237
4243
  RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
4238
4244
  RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
4239
4245
  RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
4240
- _ = runner.executeCommand(command)
4246
+ return runner.executeCommand(command)
4241
4247
  }
4242
4248
 
4243
4249
  /**
@@ -4511,14 +4517,17 @@ public func importCertificate(certificatePath: String,
4511
4517
 
4512
4518
  - parameters:
4513
4519
  - buildNumber: Change to a specific version. When you provide this parameter, Apple Generic Versioning does not have to be enabled
4520
+ - skipInfoPlist: Don't update Info.plist files when updating the build version
4514
4521
  - xcodeproj: optional, you must specify the path to your main Xcode project if it is not in the project root directory
4515
4522
 
4516
4523
  - returns: The new build number
4517
4524
  */
4518
4525
  @discardableResult public func incrementBuildNumber(buildNumber: Any? = nil,
4526
+ skipInfoPlist: Bool = false,
4519
4527
  xcodeproj: String? = nil) -> String
4520
4528
  {
4521
4529
  let command = RubyCommand(commandID: "", methodName: "increment_build_number", className: nil, args: [RubyCommand.Argument(name: "build_number", value: buildNumber),
4530
+ RubyCommand.Argument(name: "skip_info_plist", value: skipInfoPlist),
4522
4531
  RubyCommand.Argument(name: "xcodeproj", value: xcodeproj)])
4523
4532
  return runner.executeCommand(command)
4524
4533
  }
@@ -4578,9 +4587,9 @@ public func installOnDevice(extra: String? = nil,
4578
4587
 
4579
4588
  Install provisioning profile from path for current user
4580
4589
  */
4581
- public func installProvisioningProfile(path: String) {
4590
+ @discardableResult public func installProvisioningProfile(path: String) -> String {
4582
4591
  let command = RubyCommand(commandID: "", methodName: "install_provisioning_profile", className: nil, args: [RubyCommand.Argument(name: "path", value: path)])
4583
- _ = runner.executeCommand(command)
4592
+ return runner.executeCommand(command)
4584
4593
  }
4585
4594
 
4586
4595
  /**
@@ -4696,30 +4705,36 @@ public func jazzy(config: String? = nil,
4696
4705
  }
4697
4706
 
4698
4707
  /**
4699
- Leave a comment on JIRA tickets
4708
+ Leave a comment on a Jira ticket
4700
4709
 
4701
- - parameters:
4702
- - url: URL for Jira instance
4703
- - contextPath: Appends to the url (ex: "/jira")
4704
- - username: Username for JIRA instance
4705
- - password: Password for Jira
4706
- - ticketId: Ticket ID for Jira, i.e. IOS-123
4707
- - commentText: Text to add to the ticket as a comment
4708
- */
4709
- public func jira(url: String,
4710
- contextPath: String = "",
4711
- username: String,
4712
- password: String,
4713
- ticketId: String,
4714
- commentText: String)
4710
+ - parameters:
4711
+ - url: URL for Jira instance
4712
+ - contextPath: Appends to the url (ex: "/jira")
4713
+ - username: Username for Jira instance
4714
+ - password: Password or API token for Jira
4715
+ - ticketId: Ticket ID for Jira, i.e. IOS-123
4716
+ - commentText: Text to add to the ticket as a comment
4717
+ - failOnError: Should an error adding the Jira comment cause a failure?
4718
+
4719
+ - returns: A hash containing all relevant information of the Jira comment
4720
+ Access Jira comment 'id', 'author', 'body', and more
4721
+ */
4722
+ @discardableResult public func jira(url: String,
4723
+ contextPath: String = "",
4724
+ username: String,
4725
+ password: String,
4726
+ ticketId: String,
4727
+ commentText: String,
4728
+ failOnError: Bool = true) -> [String: Any]
4715
4729
  {
4716
4730
  let command = RubyCommand(commandID: "", methodName: "jira", className: nil, args: [RubyCommand.Argument(name: "url", value: url),
4717
4731
  RubyCommand.Argument(name: "context_path", value: contextPath),
4718
4732
  RubyCommand.Argument(name: "username", value: username),
4719
4733
  RubyCommand.Argument(name: "password", value: password),
4720
4734
  RubyCommand.Argument(name: "ticket_id", value: ticketId),
4721
- RubyCommand.Argument(name: "comment_text", value: commentText)])
4722
- _ = runner.executeCommand(command)
4735
+ RubyCommand.Argument(name: "comment_text", value: commentText),
4736
+ RubyCommand.Argument(name: "fail_on_error", value: failOnError)])
4737
+ return parseDictionary(fromString: runner.executeCommand(command))
4723
4738
  }
4724
4739
 
4725
4740
  /**
@@ -4780,7 +4795,7 @@ public func jira(url: String,
4780
4795
  apiKey: [String: Any]? = nil,
4781
4796
  live: Bool = false,
4782
4797
  appIdentifier: String,
4783
- username: String,
4798
+ username: String? = nil,
4784
4799
  version: String? = nil,
4785
4800
  platform: String = "ios",
4786
4801
  initialBuildNumber: Int = 1,
@@ -5038,6 +5053,153 @@ public func match(type: Any = matchfile.type,
5038
5053
  _ = runner.executeCommand(command)
5039
5054
  }
5040
5055
 
5056
+ /**
5057
+ Easily nuke your certificate and provisioning profiles (via _match_)
5058
+
5059
+ - parameters:
5060
+ - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
5061
+ - additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
5062
+ - readonly: Only fetch existing certificates and profiles, don't generate new ones
5063
+ - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
5064
+ - skipProvisioningProfiles: Skip syncing provisioning profiles
5065
+ - appIdentifier: The bundle identifier(s) of your app (comma-separated string or array of strings)
5066
+ - 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)
5067
+ - 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)
5068
+ - username: Your Apple ID Username
5069
+ - teamId: The ID of your Developer Portal team if you're in multiple teams
5070
+ - teamName: The name of your Developer Portal team if you're in multiple teams
5071
+ - storageMode: Define where you want to store your certificates
5072
+ - gitUrl: URL to the git repo containing all the certificates
5073
+ - gitBranch: Specific git branch to use
5074
+ - gitFullName: git user full name to commit
5075
+ - gitUserEmail: git user email to commit
5076
+ - shallowClone: Make a shallow clone of the repository (truncate the history to 1 revision)
5077
+ - cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
5078
+ - gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
5079
+ - gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure DevOps repository), usually a string in Base64
5080
+ - gitPrivateKey: Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
5081
+ - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
5082
+ - googleCloudKeysFile: Path to the gc_keys.json file
5083
+ - googleCloudProjectId: ID of the Google Cloud project to use for authentication
5084
+ - s3Region: Name of the S3 region
5085
+ - s3AccessKey: S3 access key
5086
+ - s3SecretAccessKey: S3 secret access key
5087
+ - s3Bucket: Name of the S3 bucket
5088
+ - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
5089
+ - keychainName: Keychain the items should be imported to
5090
+ - keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
5091
+ - force: Renew the provisioning profiles every time you run match
5092
+ - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
5093
+ - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
5094
+ - skipDocs: Skip generation of a README.md for the created git repository
5095
+ - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
5096
+ - deriveCatalystAppIdentifier: Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
5097
+ - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
5098
+ - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
5099
+ - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
5100
+ - skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
5101
+ - outputPath: Path in which to export certificates, key and profile
5102
+ - skipSetPartitionList: Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing
5103
+ - verbose: Print out extra information and all commands
5104
+
5105
+ Use the match_nuke action to revoke your certificates and provisioning profiles.
5106
+ Don't worry, apps that are already available in the App Store / TestFlight will still work.
5107
+ Builds distributed via Ad Hoc or Enterprise will be disabled after nuking your account, so you'll have to re-upload a new build.
5108
+ After clearing your account you'll start from a clean state, and you can run match to generate your certificates and profiles again.
5109
+ More information: https://docs.fastlane.tools/actions/match/
5110
+ */
5111
+ public func matchNuke(type: String = "development",
5112
+ additionalCertTypes: [String]? = nil,
5113
+ readonly: Bool = false,
5114
+ generateAppleCerts: Bool = true,
5115
+ skipProvisioningProfiles: Bool = false,
5116
+ appIdentifier: [String],
5117
+ apiKeyPath: String? = nil,
5118
+ apiKey: [String: Any]? = nil,
5119
+ username: String? = nil,
5120
+ teamId: String? = nil,
5121
+ teamName: String? = nil,
5122
+ storageMode: String = "git",
5123
+ gitUrl: String,
5124
+ gitBranch: String = "master",
5125
+ gitFullName: String? = nil,
5126
+ gitUserEmail: String? = nil,
5127
+ shallowClone: Bool = false,
5128
+ cloneBranchDirectly: Bool = false,
5129
+ gitBasicAuthorization: String? = nil,
5130
+ gitBearerAuthorization: String? = nil,
5131
+ gitPrivateKey: String? = nil,
5132
+ googleCloudBucketName: String? = nil,
5133
+ googleCloudKeysFile: String? = nil,
5134
+ googleCloudProjectId: String? = nil,
5135
+ s3Region: String? = nil,
5136
+ s3AccessKey: String? = nil,
5137
+ s3SecretAccessKey: String? = nil,
5138
+ s3Bucket: String? = nil,
5139
+ s3ObjectPrefix: String? = nil,
5140
+ keychainName: String = "login.keychain",
5141
+ keychainPassword: String? = nil,
5142
+ force: Bool = false,
5143
+ forceForNewDevices: Bool = false,
5144
+ skipConfirmation: Bool = false,
5145
+ skipDocs: Bool = false,
5146
+ platform: String = "ios",
5147
+ deriveCatalystAppIdentifier: Bool = false,
5148
+ templateName: String? = nil,
5149
+ profileName: String? = nil,
5150
+ failOnNameTaken: Bool = false,
5151
+ skipCertificateMatching: Bool = false,
5152
+ outputPath: String? = nil,
5153
+ skipSetPartitionList: Bool = false,
5154
+ verbose: Bool = false)
5155
+ {
5156
+ let command = RubyCommand(commandID: "", methodName: "match_nuke", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
5157
+ RubyCommand.Argument(name: "additional_cert_types", value: additionalCertTypes),
5158
+ RubyCommand.Argument(name: "readonly", value: readonly),
5159
+ RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
5160
+ RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
5161
+ RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
5162
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
5163
+ RubyCommand.Argument(name: "api_key", value: apiKey),
5164
+ RubyCommand.Argument(name: "username", value: username),
5165
+ RubyCommand.Argument(name: "team_id", value: teamId),
5166
+ RubyCommand.Argument(name: "team_name", value: teamName),
5167
+ RubyCommand.Argument(name: "storage_mode", value: storageMode),
5168
+ RubyCommand.Argument(name: "git_url", value: gitUrl),
5169
+ RubyCommand.Argument(name: "git_branch", value: gitBranch),
5170
+ RubyCommand.Argument(name: "git_full_name", value: gitFullName),
5171
+ RubyCommand.Argument(name: "git_user_email", value: gitUserEmail),
5172
+ RubyCommand.Argument(name: "shallow_clone", value: shallowClone),
5173
+ RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
5174
+ RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
5175
+ RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
5176
+ RubyCommand.Argument(name: "git_private_key", value: gitPrivateKey),
5177
+ RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
5178
+ RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
5179
+ RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
5180
+ RubyCommand.Argument(name: "s3_region", value: s3Region),
5181
+ RubyCommand.Argument(name: "s3_access_key", value: s3AccessKey),
5182
+ RubyCommand.Argument(name: "s3_secret_access_key", value: s3SecretAccessKey),
5183
+ RubyCommand.Argument(name: "s3_bucket", value: s3Bucket),
5184
+ RubyCommand.Argument(name: "s3_object_prefix", value: s3ObjectPrefix),
5185
+ RubyCommand.Argument(name: "keychain_name", value: keychainName),
5186
+ RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
5187
+ RubyCommand.Argument(name: "force", value: force),
5188
+ RubyCommand.Argument(name: "force_for_new_devices", value: forceForNewDevices),
5189
+ RubyCommand.Argument(name: "skip_confirmation", value: skipConfirmation),
5190
+ RubyCommand.Argument(name: "skip_docs", value: skipDocs),
5191
+ RubyCommand.Argument(name: "platform", value: platform),
5192
+ RubyCommand.Argument(name: "derive_catalyst_app_identifier", value: deriveCatalystAppIdentifier),
5193
+ RubyCommand.Argument(name: "template_name", value: templateName),
5194
+ RubyCommand.Argument(name: "profile_name", value: profileName),
5195
+ RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
5196
+ RubyCommand.Argument(name: "skip_certificate_matching", value: skipCertificateMatching),
5197
+ RubyCommand.Argument(name: "output_path", value: outputPath),
5198
+ RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
5199
+ RubyCommand.Argument(name: "verbose", value: verbose)])
5200
+ _ = runner.executeCommand(command)
5201
+ }
5202
+
5041
5203
  /**
5042
5204
  Verifies the minimum fastlane version required
5043
5205
 
@@ -5146,14 +5308,16 @@ public func nexusUpload(file: String,
5146
5308
  - ascProvider: Provider short name for accounts associated with multiple providers
5147
5309
  - printLog: Whether to print notarization log file, listing issues on failure and warnings on success
5148
5310
  - verbose: Whether to log requests
5311
+ - apiKeyPath: Path to AppStore Connect API key
5149
5312
  */
5150
5313
  public func notarize(package: String,
5151
5314
  tryEarlyStapling: Bool = false,
5152
5315
  bundleId: String? = nil,
5153
- username: String,
5316
+ username: String? = nil,
5154
5317
  ascProvider: String? = nil,
5155
5318
  printLog: Bool = false,
5156
- verbose: Bool = false)
5319
+ verbose: Bool = false,
5320
+ apiKeyPath: String? = nil)
5157
5321
  {
5158
5322
  let command = RubyCommand(commandID: "", methodName: "notarize", className: nil, args: [RubyCommand.Argument(name: "package", value: package),
5159
5323
  RubyCommand.Argument(name: "try_early_stapling", value: tryEarlyStapling),
@@ -5161,7 +5325,8 @@ public func notarize(package: String,
5161
5325
  RubyCommand.Argument(name: "username", value: username),
5162
5326
  RubyCommand.Argument(name: "asc_provider", value: ascProvider),
5163
5327
  RubyCommand.Argument(name: "print_log", value: printLog),
5164
- RubyCommand.Argument(name: "verbose", value: verbose)])
5328
+ RubyCommand.Argument(name: "verbose", value: verbose),
5329
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath)])
5165
5330
  _ = runner.executeCommand(command)
5166
5331
  }
5167
5332
 
@@ -5438,7 +5603,7 @@ public func pem(development: Bool = false,
5438
5603
  - distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
5439
5604
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
5440
5605
  - distributeExternal: Should the build be distributed to external testers?
5441
- - notifyExternalTesters: Should notify external testers?
5606
+ - notifyExternalTesters: Should notify external testers? (Not setting a value will use App Store Connect's default which is to notify)
5442
5607
  - appVersion: The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed
5443
5608
  - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
5444
5609
  - expirePreviousBuilds: Should expire previous builds?
@@ -5460,7 +5625,7 @@ public func pem(development: Bool = false,
5460
5625
  */
5461
5626
  public func pilot(apiKeyPath: String? = nil,
5462
5627
  apiKey: [String: Any]? = nil,
5463
- username: String,
5628
+ username: String? = nil,
5464
5629
  appIdentifier: String? = nil,
5465
5630
  appPlatform: String = "ios",
5466
5631
  appleId: String? = nil,
@@ -5478,7 +5643,7 @@ public func pilot(apiKeyPath: String? = nil,
5478
5643
  distributeOnly: Bool = false,
5479
5644
  usesNonExemptEncryption: Bool = false,
5480
5645
  distributeExternal: Bool = false,
5481
- notifyExternalTesters: Bool = true,
5646
+ notifyExternalTesters: Any? = nil,
5482
5647
  appVersion: String? = nil,
5483
5648
  buildNumber: String? = nil,
5484
5649
  expirePreviousBuilds: Bool = false,
@@ -5725,17 +5890,17 @@ public func podioItem(clientId: String,
5725
5890
 
5726
5891
  More information: https://fastlane.tools/precheck
5727
5892
  */
5728
- public func precheck(apiKeyPath: Any? = precheckfile.apiKeyPath,
5729
- apiKey: [String: Any]? = precheckfile.apiKey,
5730
- appIdentifier: Any = precheckfile.appIdentifier,
5731
- username: Any = precheckfile.username,
5732
- teamId: Any? = precheckfile.teamId,
5733
- teamName: Any? = precheckfile.teamName,
5734
- platform: Any = precheckfile.platform,
5735
- defaultRuleLevel: Any = precheckfile.defaultRuleLevel,
5736
- includeInAppPurchases: Bool = precheckfile.includeInAppPurchases,
5737
- useLive: Bool = precheckfile.useLive,
5738
- freeStuffInIap: Any? = precheckfile.freeStuffInIap)
5893
+ @discardableResult public func precheck(apiKeyPath: Any? = precheckfile.apiKeyPath,
5894
+ apiKey: [String: Any]? = precheckfile.apiKey,
5895
+ appIdentifier: Any = precheckfile.appIdentifier,
5896
+ username: Any? = precheckfile.username,
5897
+ teamId: Any? = precheckfile.teamId,
5898
+ teamName: Any? = precheckfile.teamName,
5899
+ platform: Any = precheckfile.platform,
5900
+ defaultRuleLevel: Any = precheckfile.defaultRuleLevel,
5901
+ includeInAppPurchases: Bool = precheckfile.includeInAppPurchases,
5902
+ useLive: Bool = precheckfile.useLive,
5903
+ freeStuffInIap: Any? = precheckfile.freeStuffInIap) -> Bool
5739
5904
  {
5740
5905
  let command = RubyCommand(commandID: "", methodName: "precheck", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
5741
5906
  RubyCommand.Argument(name: "api_key", value: apiKey),
@@ -5748,7 +5913,7 @@ public func precheck(apiKeyPath: Any? = precheckfile.apiKeyPath,
5748
5913
  RubyCommand.Argument(name: "include_in_app_purchases", value: includeInAppPurchases),
5749
5914
  RubyCommand.Argument(name: "use_live", value: useLive),
5750
5915
  RubyCommand.Argument(name: "free_stuff_in_iap", value: freeStuffInIap)])
5751
- _ = runner.executeCommand(command)
5916
+ return parseBool(fromString: runner.executeCommand(command))
5752
5917
  }
5753
5918
 
5754
5919
  /**
@@ -6255,6 +6420,7 @@ public func rubyVersion() {
6255
6420
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
6256
6421
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
6257
6422
  - useSystemScm: Lets xcodebuild use system's scm configuration
6423
+ - numberOfRetries: The number of times a test can fail before scan should stop retrying
6258
6424
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
6259
6425
 
6260
6426
  More information: https://docs.fastlane.tools/actions/scan/
@@ -6328,6 +6494,7 @@ public func runTests(workspace: String? = nil,
6328
6494
  skipPackageDependenciesResolution: Bool = false,
6329
6495
  disablePackageAutomaticUpdates: Bool = false,
6330
6496
  useSystemScm: Bool = false,
6497
+ numberOfRetries: Int = 0,
6331
6498
  failBuild: Bool = true)
6332
6499
  {
6333
6500
  let command = RubyCommand(commandID: "", methodName: "run_tests", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
@@ -6399,6 +6566,7 @@ public func runTests(workspace: String? = nil,
6399
6566
  RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
6400
6567
  RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
6401
6568
  RubyCommand.Argument(name: "use_system_scm", value: useSystemScm),
6569
+ RubyCommand.Argument(name: "number_of_retries", value: numberOfRetries),
6402
6570
  RubyCommand.Argument(name: "fail_build", value: failBuild)])
6403
6571
  _ = runner.executeCommand(command)
6404
6572
  }
@@ -6552,6 +6720,7 @@ public func say(text: Any,
6552
6720
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
6553
6721
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
6554
6722
  - useSystemScm: Lets xcodebuild use system's scm configuration
6723
+ - numberOfRetries: The number of times a test can fail before scan should stop retrying
6555
6724
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
6556
6725
 
6557
6726
  More information: https://docs.fastlane.tools/actions/scan/
@@ -6625,6 +6794,7 @@ public func scan(workspace: Any? = scanfile.workspace,
6625
6794
  skipPackageDependenciesResolution: Bool = scanfile.skipPackageDependenciesResolution,
6626
6795
  disablePackageAutomaticUpdates: Bool = scanfile.disablePackageAutomaticUpdates,
6627
6796
  useSystemScm: Bool = scanfile.useSystemScm,
6797
+ numberOfRetries: Int = scanfile.numberOfRetries,
6628
6798
  failBuild: Bool = scanfile.failBuild)
6629
6799
  {
6630
6800
  let command = RubyCommand(commandID: "", methodName: "scan", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
@@ -6696,6 +6866,7 @@ public func scan(workspace: Any? = scanfile.workspace,
6696
6866
  RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
6697
6867
  RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
6698
6868
  RubyCommand.Argument(name: "use_system_scm", value: useSystemScm),
6869
+ RubyCommand.Argument(name: "number_of_retries", value: numberOfRetries),
6699
6870
  RubyCommand.Argument(name: "fail_build", value: failBuild)])
6700
6871
  _ = runner.executeCommand(command)
6701
6872
  }
@@ -7118,29 +7289,29 @@ public func setupTravis(force: Bool = false) {
7118
7289
 
7119
7290
  **Note**: It is recommended to use [match](https://docs.fastlane.tools/actions/match/) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your provisioning profiles. Use _sigh_ directly only if you want full control over what's going on and know more about codesigning.
7120
7291
  */
7121
- public func sigh(adhoc: Bool = false,
7122
- developerId: Bool = false,
7123
- development: Bool = false,
7124
- skipInstall: Bool = false,
7125
- force: Bool = false,
7126
- appIdentifier: String,
7127
- apiKeyPath: String? = nil,
7128
- apiKey: [String: Any]? = nil,
7129
- username: String,
7130
- teamId: String? = nil,
7131
- teamName: String? = nil,
7132
- provisioningName: String? = nil,
7133
- ignoreProfilesWithDifferentName: Bool = false,
7134
- outputPath: String = ".",
7135
- certId: String? = nil,
7136
- certOwnerName: String? = nil,
7137
- filename: String? = nil,
7138
- skipFetchProfiles: Bool = false,
7139
- skipCertificateVerification: Bool = false,
7140
- platform: Any = "ios",
7141
- readonly: Bool = false,
7142
- templateName: String? = nil,
7143
- failOnNameTaken: Bool = false)
7292
+ @discardableResult public func sigh(adhoc: Bool = false,
7293
+ developerId: Bool = false,
7294
+ development: Bool = false,
7295
+ skipInstall: Bool = false,
7296
+ force: Bool = false,
7297
+ appIdentifier: String,
7298
+ apiKeyPath: String? = nil,
7299
+ apiKey: [String: Any]? = nil,
7300
+ username: String? = nil,
7301
+ teamId: String? = nil,
7302
+ teamName: String? = nil,
7303
+ provisioningName: String? = nil,
7304
+ ignoreProfilesWithDifferentName: Bool = false,
7305
+ outputPath: String = ".",
7306
+ certId: String? = nil,
7307
+ certOwnerName: String? = nil,
7308
+ filename: String? = nil,
7309
+ skipFetchProfiles: Bool = false,
7310
+ skipCertificateVerification: Bool = false,
7311
+ platform: Any = "ios",
7312
+ readonly: Bool = false,
7313
+ templateName: String? = nil,
7314
+ failOnNameTaken: Bool = false) -> String
7144
7315
  {
7145
7316
  let command = RubyCommand(commandID: "", methodName: "sigh", className: nil, args: [RubyCommand.Argument(name: "adhoc", value: adhoc),
7146
7317
  RubyCommand.Argument(name: "developer_id", value: developerId),
@@ -7165,7 +7336,7 @@ public func sigh(adhoc: Bool = false,
7165
7336
  RubyCommand.Argument(name: "readonly", value: readonly),
7166
7337
  RubyCommand.Argument(name: "template_name", value: templateName),
7167
7338
  RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken)])
7168
- _ = runner.executeCommand(command)
7339
+ return runner.executeCommand(command)
7169
7340
  }
7170
7341
 
7171
7342
  /**
@@ -7584,6 +7755,57 @@ public func sonar(projectConfigurationPath: String? = nil,
7584
7755
  _ = runner.executeCommand(command)
7585
7756
  }
7586
7757
 
7758
+ /**
7759
+ Generate docs using SourceDocs
7760
+
7761
+ - parameters:
7762
+ - allModules: Generate documentation for all modules in a Swift package
7763
+ - spmModule: Generate documentation for Swift Package Manager module
7764
+ - moduleName: Generate documentation for a Swift module
7765
+ - linkBeginning: The text to begin links with
7766
+ - linkEnding: The text to end links with (default: .md)
7767
+ - outputFolder: Output directory to clean (default: Documentation/Reference)
7768
+ - minAcl: Access level to include in documentation [private, fileprivate, internal, public, open] (default: public)
7769
+ - moduleNamePath: Include the module name as part of the output folder path
7770
+ - clean: Delete output folder before generating documentation
7771
+ - collapsible: Put methods, properties and enum cases inside collapsible blocks
7772
+ - tableOfContents: Generate a table of contents with properties and methods for each type
7773
+ - reproducible: Generate documentation that is reproducible: only depends on the sources
7774
+ - scheme: Create documentation for specific scheme
7775
+ - sdkPlatform: Create documentation for specific sdk platform
7776
+ */
7777
+ public func sourcedocs(allModules: Bool? = nil,
7778
+ spmModule: String? = nil,
7779
+ moduleName: String? = nil,
7780
+ linkBeginning: String? = nil,
7781
+ linkEnding: String? = nil,
7782
+ outputFolder: String,
7783
+ minAcl: String? = nil,
7784
+ moduleNamePath: Bool? = nil,
7785
+ clean: Bool? = nil,
7786
+ collapsible: Bool? = nil,
7787
+ tableOfContents: Bool? = nil,
7788
+ reproducible: Bool? = nil,
7789
+ scheme: String? = nil,
7790
+ sdkPlatform: String? = nil)
7791
+ {
7792
+ let command = RubyCommand(commandID: "", methodName: "sourcedocs", className: nil, args: [RubyCommand.Argument(name: "all_modules", value: allModules),
7793
+ RubyCommand.Argument(name: "spm_module", value: spmModule),
7794
+ RubyCommand.Argument(name: "module_name", value: moduleName),
7795
+ RubyCommand.Argument(name: "link_beginning", value: linkBeginning),
7796
+ RubyCommand.Argument(name: "link_ending", value: linkEnding),
7797
+ RubyCommand.Argument(name: "output_folder", value: outputFolder),
7798
+ RubyCommand.Argument(name: "min_acl", value: minAcl),
7799
+ RubyCommand.Argument(name: "module_name_path", value: moduleNamePath),
7800
+ RubyCommand.Argument(name: "clean", value: clean),
7801
+ RubyCommand.Argument(name: "collapsible", value: collapsible),
7802
+ RubyCommand.Argument(name: "table_of_contents", value: tableOfContents),
7803
+ RubyCommand.Argument(name: "reproducible", value: reproducible),
7804
+ RubyCommand.Argument(name: "scheme", value: scheme),
7805
+ RubyCommand.Argument(name: "sdk_platform", value: sdkPlatform)])
7806
+ _ = runner.executeCommand(command)
7807
+ }
7808
+
7587
7809
  /**
7588
7810
  Find, print, and copy Spaceship logs
7589
7811
 
@@ -7596,18 +7818,18 @@ public func sonar(projectConfigurationPath: String? = nil,
7596
7818
 
7597
7819
  - returns: The array of Spaceship logs
7598
7820
  */
7599
- public func spaceshipLogs(latest: Bool = true,
7600
- printContents: Bool = false,
7601
- printPaths: Bool = false,
7602
- copyToPath: String? = nil,
7603
- copyToClipboard: Bool = false)
7821
+ @discardableResult public func spaceshipLogs(latest: Bool = true,
7822
+ printContents: Bool = false,
7823
+ printPaths: Bool = false,
7824
+ copyToPath: String? = nil,
7825
+ copyToClipboard: Bool = false) -> [String]
7604
7826
  {
7605
7827
  let command = RubyCommand(commandID: "", methodName: "spaceship_logs", className: nil, args: [RubyCommand.Argument(name: "latest", value: latest),
7606
7828
  RubyCommand.Argument(name: "print_contents", value: printContents),
7607
7829
  RubyCommand.Argument(name: "print_paths", value: printPaths),
7608
7830
  RubyCommand.Argument(name: "copy_to_path", value: copyToPath),
7609
7831
  RubyCommand.Argument(name: "copy_to_clipboard", value: copyToClipboard)])
7610
- _ = runner.executeCommand(command)
7832
+ return parseArray(fromString: runner.executeCommand(command))
7611
7833
  }
7612
7834
 
7613
7835
  /**
@@ -7751,8 +7973,8 @@ public func ssh(username: String,
7751
7973
  - skipUploadScreenshots: Whether to skip uploading SCREENSHOTS
7752
7974
  - trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
7753
7975
  - validateOnly: Only validate changes with Google Play rather than actually publish
7754
- - mapping: Path to the mapping file to upload
7755
- - mappingPaths: An array of paths to mapping files to upload
7976
+ - mapping: Path to the mapping file to upload (mapping.txt or native-debug-symbols.zip alike)
7977
+ - mappingPaths: An array of paths to mapping files to upload (mapping.txt or native-debug-symbols.zip alike)
7756
7978
  - rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
7757
7979
  - checkSupersededTracks: **DEPRECATED!** Google Play does this automatically now - Check the other tracks for superseded versions and disable them
7758
7980
  - timeout: Timeout for read, open, and send (in seconds)
@@ -8127,7 +8349,7 @@ public func testfairy(apiKey: String,
8127
8349
  - distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
8128
8350
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
8129
8351
  - distributeExternal: Should the build be distributed to external testers?
8130
- - notifyExternalTesters: Should notify external testers?
8352
+ - notifyExternalTesters: Should notify external testers? (Not setting a value will use App Store Connect's default which is to notify)
8131
8353
  - appVersion: The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed
8132
8354
  - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
8133
8355
  - expirePreviousBuilds: Should expire previous builds?
@@ -8149,7 +8371,7 @@ public func testfairy(apiKey: String,
8149
8371
  */
8150
8372
  public func testflight(apiKeyPath: String? = nil,
8151
8373
  apiKey: [String: Any]? = nil,
8152
- username: String,
8374
+ username: String? = nil,
8153
8375
  appIdentifier: String? = nil,
8154
8376
  appPlatform: String = "ios",
8155
8377
  appleId: String? = nil,
@@ -8167,7 +8389,7 @@ public func testflight(apiKeyPath: String? = nil,
8167
8389
  distributeOnly: Bool = false,
8168
8390
  usesNonExemptEncryption: Bool = false,
8169
8391
  distributeExternal: Bool = false,
8170
- notifyExternalTesters: Bool = true,
8392
+ notifyExternalTesters: Any? = nil,
8171
8393
  appVersion: String? = nil,
8172
8394
  buildNumber: String? = nil,
8173
8395
  expirePreviousBuilds: Bool = false,
@@ -8811,7 +9033,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
8811
9033
  */
8812
9034
  public func uploadToAppStore(apiKeyPath: String? = nil,
8813
9035
  apiKey: [String: Any]? = nil,
8814
- username: String,
9036
+ username: String? = nil,
8815
9037
  appIdentifier: String? = nil,
8816
9038
  appVersion: String? = nil,
8817
9039
  ipa: String? = nil,
@@ -8964,8 +9186,8 @@ public func uploadToAppStore(apiKeyPath: String? = nil,
8964
9186
  - skipUploadScreenshots: Whether to skip uploading SCREENSHOTS
8965
9187
  - trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
8966
9188
  - validateOnly: Only validate changes with Google Play rather than actually publish
8967
- - mapping: Path to the mapping file to upload
8968
- - mappingPaths: An array of paths to mapping files to upload
9189
+ - mapping: Path to the mapping file to upload (mapping.txt or native-debug-symbols.zip alike)
9190
+ - mappingPaths: An array of paths to mapping files to upload (mapping.txt or native-debug-symbols.zip alike)
8969
9191
  - rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
8970
9192
  - checkSupersededTracks: **DEPRECATED!** Google Play does this automatically now - Check the other tracks for superseded versions and disable them
8971
9193
  - timeout: Timeout for read, open, and send (in seconds)
@@ -9120,7 +9342,7 @@ public func uploadToPlayStoreInternalAppSharing(packageName: String,
9120
9342
  - distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
9121
9343
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
9122
9344
  - distributeExternal: Should the build be distributed to external testers?
9123
- - notifyExternalTesters: Should notify external testers?
9345
+ - notifyExternalTesters: Should notify external testers? (Not setting a value will use App Store Connect's default which is to notify)
9124
9346
  - appVersion: The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed
9125
9347
  - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
9126
9348
  - expirePreviousBuilds: Should expire previous builds?
@@ -9142,7 +9364,7 @@ public func uploadToPlayStoreInternalAppSharing(packageName: String,
9142
9364
  */
9143
9365
  public func uploadToTestflight(apiKeyPath: String? = nil,
9144
9366
  apiKey: [String: Any]? = nil,
9145
- username: String,
9367
+ username: String? = nil,
9146
9368
  appIdentifier: String? = nil,
9147
9369
  appPlatform: String = "ios",
9148
9370
  appleId: String? = nil,
@@ -9160,7 +9382,7 @@ public func uploadToTestflight(apiKeyPath: String? = nil,
9160
9382
  distributeOnly: Bool = false,
9161
9383
  usesNonExemptEncryption: Bool = false,
9162
9384
  distributeExternal: Bool = false,
9163
- notifyExternalTesters: Bool = true,
9385
+ notifyExternalTesters: Any? = nil,
9164
9386
  appVersion: String? = nil,
9165
9387
  buildNumber: String? = nil,
9166
9388
  expirePreviousBuilds: Bool = false,
@@ -9503,7 +9725,7 @@ public func xcov(workspace: String? = nil,
9503
9725
  htmlReport: Bool = true,
9504
9726
  markdownReport: Bool = false,
9505
9727
  jsonReport: Bool = false,
9506
- minimumCoveragePercentage: Float = 0,
9728
+ minimumCoveragePercentage: Float = 0.0,
9507
9729
  slackUrl: String? = nil,
9508
9730
  slackChannel: String? = nil,
9509
9731
  skipSlack: Bool = false,
@@ -9519,7 +9741,7 @@ public func xcov(workspace: String? = nil,
9519
9741
  coverallsServiceJobId: String? = nil,
9520
9742
  coverallsRepoToken: String? = nil,
9521
9743
  xcconfig: String? = nil,
9522
- ideFoundationPath: String = "/Applications/Xcode-12.4.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
9744
+ ideFoundationPath: String = "/Applications/Xcode-12.2.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
9523
9745
  legacySupport: Bool = false)
9524
9746
  {
9525
9747
  let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
@@ -9665,4 +9887,4 @@ public let snapshotfile = Snapshotfile()
9665
9887
 
9666
9888
  // Please don't remove the lines below
9667
9889
  // They are used to detect outdated files
9668
- // FastlaneRunnerAPIVersion [0.9.113]
9890
+ // FastlaneRunnerAPIVersion [0.9.118]