fastlane 2.183.2 → 2.184.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +88 -88
  3. data/cert/lib/cert/runner.rb +3 -7
  4. data/deliver/lib/deliver/commands_generator.rb +1 -1
  5. data/deliver/lib/deliver/detect_values.rb +5 -3
  6. data/deliver/lib/deliver/download_screenshots.rb +1 -1
  7. data/deliver/lib/deliver/html_generator.rb +2 -2
  8. data/deliver/lib/deliver/module.rb +6 -0
  9. data/deliver/lib/deliver/options.rb +36 -51
  10. data/deliver/lib/deliver/runner.rb +8 -11
  11. data/deliver/lib/deliver/setup.rb +1 -1
  12. data/deliver/lib/deliver/submit_for_review.rb +1 -1
  13. data/deliver/lib/deliver/upload_metadata.rb +19 -5
  14. data/deliver/lib/deliver/upload_price_tier.rb +1 -1
  15. data/deliver/lib/deliver/upload_screenshots.rb +1 -1
  16. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +7 -11
  17. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +12 -2
  18. data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +5 -1
  19. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +32 -12
  20. data/fastlane/lib/fastlane/actions/get_certificates.rb +5 -1
  21. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +5 -1
  22. data/fastlane/lib/fastlane/actions/register_device.rb +7 -10
  23. data/fastlane/lib/fastlane/actions/register_devices.rb +7 -10
  24. data/fastlane/lib/fastlane/actions/set_changelog.rb +7 -10
  25. data/fastlane/lib/fastlane/actions/swiftlint.rb +16 -4
  26. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +6 -1
  27. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +5 -1
  28. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +2 -1
  29. data/fastlane/lib/fastlane/swift_fastlane_function.rb +6 -4
  30. data/fastlane/lib/fastlane/version.rb +1 -1
  31. data/fastlane/swift/Deliverfile.swift +1 -1
  32. data/fastlane/swift/DeliverfileProtocol.swift +20 -20
  33. data/fastlane/swift/Fastlane.swift +462 -240
  34. data/fastlane/swift/Gymfile.swift +1 -1
  35. data/fastlane/swift/GymfileProtocol.swift +1 -1
  36. data/fastlane/swift/Matchfile.swift +1 -1
  37. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  38. data/fastlane/swift/OptionalConfigValue.swift +2 -32
  39. data/fastlane/swift/Precheckfile.swift +1 -1
  40. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  41. data/fastlane/swift/Scanfile.swift +1 -1
  42. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  43. data/fastlane/swift/Screengrabfile.swift +1 -1
  44. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  45. data/fastlane/swift/Snapshotfile.swift +1 -1
  46. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  47. data/fastlane/swift/formatting/Brewfile.lock.json +2 -2
  48. data/fastlane_core/lib/fastlane_core/build_watcher.rb +24 -1
  49. data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +5 -0
  50. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +2 -0
  51. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +1 -1
  52. data/match/lib/match/importer.rb +6 -10
  53. data/match/lib/match/migrate.rb +2 -3
  54. data/match/lib/match/nuke.rb +3 -7
  55. data/match/lib/match/runner.rb +2 -3
  56. data/match/lib/match/spaceship_ensure.rb +3 -0
  57. data/match/lib/match/storage/google_cloud_storage.rb +2 -2
  58. data/match/lib/match/storage/s3_storage.rb +2 -2
  59. data/pilot/lib/pilot/build_manager.rb +2 -0
  60. data/pilot/lib/pilot/manager.rb +3 -7
  61. data/pilot/lib/pilot/options.rb +8 -0
  62. data/precheck/lib/precheck/runner.rb +8 -7
  63. data/sigh/lib/assets/resign.sh +77 -46
  64. data/sigh/lib/sigh/download_all.rb +4 -8
  65. data/sigh/lib/sigh/runner.rb +4 -8
  66. data/spaceship/lib/spaceship/connect_api/models/.age_rating_declaration.rb.swp +0 -0
  67. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +35 -4
  68. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +10 -0
  69. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +2 -3
  70. data/spaceship/lib/spaceship/connect_api/token.rb +6 -0
  71. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +4 -2
  72. metadata +19 -18
@@ -11,8 +11,20 @@ module Fastlane
11
11
  UI.user_error!("Your version of swiftlint (#{version}) does not support autocorrect mode.\nUpdate swiftlint using `brew update && brew upgrade swiftlint`")
12
12
  end
13
13
 
14
+ # See 'Breaking' section release notes here: https://github.com/realm/SwiftLint/releases/tag/0.43.0
15
+ if params[:mode] == :autocorrect && version >= Gem::Version.new('0.43.0')
16
+ UI.deprecated("Your version of swiftlint (#{version}) has deprecated autocorrect mode, please start using fix mode in input param")
17
+ UI.important("For now, switching swiftlint mode `from :autocorrect to :fix` for you 😇")
18
+ params[:mode] = :fix
19
+ elsif params[:mode] == :fix && version < Gem::Version.new('0.43.0')
20
+ UI.important("Your version of swiftlint (#{version}) does not support fix mode.\nUpdate swiftlint using `brew update && brew upgrade swiftlint`")
21
+ UI.important("For now, switching swiftlint mode `from :fix to :autocorrect` for you 😇")
22
+ params[:mode] = :autocorrect
23
+ end
24
+
25
+ mode_format = params[:mode] == :fix ? "--" : ""
14
26
  command = (params[:executable] || "swiftlint").dup
15
- command << " #{params[:mode]}"
27
+ command << " #{mode_format}#{params[:mode]}"
16
28
  command << optional_flags(params)
17
29
 
18
30
  if params[:files]
@@ -55,7 +67,7 @@ module Fastlane
55
67
  end
56
68
 
57
69
  def self.supported_no_cache_option(params)
58
- if params[:mode] == :autocorrect || params[:mode] == :lint
70
+ if [:autocorrect, :fix, :lint].include?(params[:mode])
59
71
  return " --no-cache"
60
72
  else
61
73
  return ""
@@ -89,8 +101,8 @@ module Fastlane
89
101
  [
90
102
  FastlaneCore::ConfigItem.new(key: :mode,
91
103
  env_name: "FL_SWIFTLINT_MODE",
92
- description: "SwiftLint mode: :lint, :autocorrect or :analyze",
93
- is_string: false,
104
+ description: "SwiftLint mode: :lint, :fix, :autocorrect or :analyze",
105
+ type: Symbol,
94
106
  default_value: :lint,
95
107
  optional: true),
96
108
  FastlaneCore::ConfigItem.new(key: :path,
@@ -10,7 +10,12 @@ module Fastlane
10
10
  require 'match'
11
11
 
12
12
  params.load_configuration_file("Matchfile")
13
- params[:api_key] ||= Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
13
+
14
+ # Only set :api_key from SharedValues if :api_key_path isn't set (conflicting options)
15
+ unless params[:api_key_path]
16
+ params[:api_key] ||= Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
17
+ end
18
+
14
19
  Match::Runner.new.run(params)
15
20
 
16
21
  define_profile_type(params)
@@ -12,7 +12,11 @@ module Fastlane
12
12
  config[:screenshots_path] ||= Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH] if Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH]
13
13
  config[:ipa] ||= Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] if Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
14
14
  config[:pkg] ||= Actions.lane_context[SharedValues::PKG_OUTPUT_PATH] if Actions.lane_context[SharedValues::PKG_OUTPUT_PATH]
15
- config[:api_key] ||= Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
15
+
16
+ # Only set :api_key from SharedValues if :api_key_path isn't set (conflicting options)
17
+ unless config[:api_key_path]
18
+ config[:api_key] ||= Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
19
+ end
16
20
 
17
21
  return config if Helper.test?
18
22
  Deliver::Runner.new(config).run
@@ -15,7 +15,8 @@ module Fastlane
15
15
  values[:ipa] = File.expand_path(values[:ipa]) if values[:ipa]
16
16
  end
17
17
 
18
- if values[:api_key_path].nil?
18
+ # Only set :api_key from SharedValues if :api_key_path isn't set (conflicting options)
19
+ unless values[:api_key_path]
19
20
  values[:api_key] ||= Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
20
21
  end
21
22
 
@@ -195,7 +195,7 @@ module Fastlane
195
195
  else
196
196
  if type == "((String) -> Void)?"
197
197
  "#{param}: #{type} = nil"
198
- elsif optional && type.end_with?('?')
198
+ elsif optional && type.end_with?('?') && !type.start_with?('Any')
199
199
  "#{param}: OptionalConfigValue<#{type}> = .fastlaneDefault(#{default_value})"
200
200
  else
201
201
  "#{param}: #{type} = #{default_value}"
@@ -280,12 +280,13 @@ module Fastlane
280
280
  return "[]" # return empty list for argument
281
281
  end
282
282
 
283
- argument_object_strings = @param_names.zip(param_type_overrides, param_default_values, param_optionality_values).map do |name, type_override, default_value, is_optional|
283
+ argument_object_strings = @param_names.zip(param_type_overrides, param_default_values, param_optionality_values, param_is_strings).map do |name, type_override, default_value, is_optional, is_string|
284
+ type = get_type(param: name, default_value: default_value, optional: is_optional, param_type_override: type_override, is_string: is_string)
284
285
  sanitized_name = camel_case_lower(string: name)
285
286
  sanitized_name = sanitize_reserved_word(word: sanitized_name)
286
287
  type_string = type_override == :string_callback ? ".stringClosure" : "nil"
287
288
 
288
- if !(type_override == :string_callback || !(is_optional && default_value.nil?))
289
+ if !(type_override == :string_callback || !(is_optional && default_value.nil? && !type.start_with?('Any')))
289
290
  { name: "#{sanitized_name.gsub('`', '')}Arg", arg: "let #{sanitized_name.gsub('`', '')}Arg = #{sanitized_name}.asRubyArgument(name: \"#{name}\", type: #{type_string})" }
290
291
  else
291
292
  { name: "#{sanitized_name.gsub('`', '')}Arg", arg: "let #{sanitized_name.gsub('`', '')}Arg = RubyCommand.Argument(name: \"#{name}\", value: #{sanitized_name}, type: #{type_string})" }
@@ -325,6 +326,7 @@ module Fastlane
325
326
  implm += "let args: [RubyCommand.Argument] = []\n"
326
327
  else
327
328
  implm += "let args = [#{args.group_by { |h| h[:name] }.keys.join(",\n")}]\n"
329
+ implm += ".filter { $0?.value != nil }\n"
328
330
  implm += ".compactMap { $0 }\n"
329
331
  end
330
332
  implm += "let command = RubyCommand(commandID: \"\", methodName: \"#{@function_name}\", className: nil, args: args)\n"
@@ -431,7 +433,7 @@ module Fastlane
431
433
 
432
434
  if type == "((String) -> Void)?"
433
435
  "#{param}: #{type} = nil"
434
- elsif optional && type.end_with?('?')
436
+ elsif optional && type.end_with?('?') && !type.start_with?('Any')
435
437
  "#{param}: OptionalConfigValue<#{type}> = .fastlaneDefault(#{self.class_name.downcase}.#{static_var_for_parameter_name})"
436
438
  else
437
439
  "#{param}: #{type} = #{self.class_name.downcase}.#{static_var_for_parameter_name}"
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.183.2'.freeze
2
+ VERSION = '2.184.0'.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.183.2
20
+ // Generated with fastlane 2.184.0
@@ -78,7 +78,7 @@ public protocol DeliverfileProtocol: class {
78
78
  var resetRatings: Bool { get }
79
79
 
80
80
  /// The price tier of this application
81
- var priceTier: String? { get }
81
+ var priceTier: Int? { get }
82
82
 
83
83
  /// Path to the app rating's config
84
84
  var appRatingConfigPath: String? { get }
@@ -137,7 +137,7 @@ public protocol DeliverfileProtocol: class {
137
137
  /// Metadata: The english name of the secondary second sub category (e.g. `Educational`, `Puzzle`)
138
138
  var secondarySecondSubCategory: String? { get }
139
139
 
140
- /// Metadata: A hash containing the trade representative contact information
140
+ /// **DEPRECATED!** This is no longer used by App Store Connect - Metadata: A hash containing the trade representative contact information
141
141
  var tradeRepresentativeContactInformation: [String: Any]? { get }
142
142
 
143
143
  /// Metadata: A hash containing the review information
@@ -147,10 +147,10 @@ public protocol DeliverfileProtocol: class {
147
147
  var appReviewAttachmentFile: String? { get }
148
148
 
149
149
  /// Metadata: The localised app description
150
- var description: String? { get }
150
+ var description: [String: Any]? { get }
151
151
 
152
152
  /// Metadata: The localised app name
153
- var name: String? { get }
153
+ var name: [String: Any]? { get }
154
154
 
155
155
  /// Metadata: The localised app subtitle
156
156
  var subtitle: [String: Any]? { get }
@@ -162,19 +162,19 @@ public protocol DeliverfileProtocol: class {
162
162
  var promotionalText: [String: Any]? { get }
163
163
 
164
164
  /// Metadata: Localised release notes for this version
165
- var releaseNotes: String? { get }
165
+ var releaseNotes: [String: Any]? { get }
166
166
 
167
167
  /// Metadata: Localised privacy url
168
- var privacyUrl: String? { get }
168
+ var privacyUrl: [String: Any]? { get }
169
169
 
170
170
  /// Metadata: Localised Apple TV privacy policy text
171
- var appleTvPrivacyPolicy: String? { get }
171
+ var appleTvPrivacyPolicy: [String: Any]? { get }
172
172
 
173
173
  /// Metadata: Localised support url
174
- var supportUrl: String? { get }
174
+ var supportUrl: [String: Any]? { get }
175
175
 
176
176
  /// Metadata: Localised marketing url
177
- var marketingUrl: String? { get }
177
+ var marketingUrl: [String: Any]? { get }
178
178
 
179
179
  /// Metadata: List of languages to activate
180
180
  var languages: [String]? { get }
@@ -186,7 +186,7 @@ public protocol DeliverfileProtocol: class {
186
186
  var precheckIncludeInAppPurchases: Bool { get }
187
187
 
188
188
  /// The (spaceship) app ID of the app you want to use/modify
189
- var app: String { get }
189
+ var app: Int? { get }
190
190
  }
191
191
 
192
192
  public extension DeliverfileProtocol {
@@ -215,7 +215,7 @@ public extension DeliverfileProtocol {
215
215
  var autoReleaseDate: Int? { return nil }
216
216
  var phasedRelease: Bool { return false }
217
217
  var resetRatings: Bool { return false }
218
- var priceTier: String? { return nil }
218
+ var priceTier: Int? { return nil }
219
219
  var appRatingConfigPath: String? { return nil }
220
220
  var submissionInformation: [String: Any]? { return nil }
221
221
  var teamId: String? { return nil }
@@ -238,22 +238,22 @@ public extension DeliverfileProtocol {
238
238
  var tradeRepresentativeContactInformation: [String: Any]? { return nil }
239
239
  var appReviewInformation: [String: Any]? { return nil }
240
240
  var appReviewAttachmentFile: String? { return nil }
241
- var description: String? { return nil }
242
- var name: String? { return nil }
241
+ var description: [String: Any]? { return nil }
242
+ var name: [String: Any]? { return nil }
243
243
  var subtitle: [String: Any]? { return nil }
244
244
  var keywords: [String: Any]? { return nil }
245
245
  var promotionalText: [String: Any]? { return nil }
246
- var releaseNotes: String? { return nil }
247
- var privacyUrl: String? { return nil }
248
- var appleTvPrivacyPolicy: String? { return nil }
249
- var supportUrl: String? { return nil }
250
- var marketingUrl: String? { return nil }
246
+ var releaseNotes: [String: Any]? { return nil }
247
+ var privacyUrl: [String: Any]? { return nil }
248
+ var appleTvPrivacyPolicy: [String: Any]? { return nil }
249
+ var supportUrl: [String: Any]? { return nil }
250
+ var marketingUrl: [String: Any]? { return nil }
251
251
  var languages: [String]? { return nil }
252
252
  var ignoreLanguageDirectoryValidation: Bool { return false }
253
253
  var precheckIncludeInAppPurchases: Bool { return true }
254
- var app: String { return "" }
254
+ var app: Int? { return nil }
255
255
  }
256
256
 
257
257
  // Please don't remove the lines below
258
258
  // They are used to detect outdated files
259
- // FastlaneRunnerAPIVersion [0.9.69]
259
+ // FastlaneRunnerAPIVersion [0.9.70]
@@ -24,6 +24,7 @@ import Foundation
24
24
  let args = [serialArg,
25
25
  commandArg,
26
26
  adbPathArg]
27
+ .filter { $0?.value != nil }
27
28
  .compactMap { $0 }
28
29
  let command = RubyCommand(commandID: "", methodName: "adb", className: nil, args: args)
29
30
  return runner.executeCommand(command)
@@ -41,6 +42,7 @@ import Foundation
41
42
  public func adbDevices(adbPath: String = "adb") {
42
43
  let adbPathArg = RubyCommand.Argument(name: "adb_path", value: adbPath, type: nil)
43
44
  let args = [adbPathArg]
45
+ .filter { $0?.value != nil }
44
46
  .compactMap { $0 }
45
47
  let command = RubyCommand(commandID: "", methodName: "adb_devices", className: nil, args: args)
46
48
  _ = runner.executeCommand(command)
@@ -54,6 +56,7 @@ public func adbDevices(adbPath: String = "adb") {
54
56
  public func addExtraPlatforms(platforms: [String] = []) {
55
57
  let platformsArg = RubyCommand.Argument(name: "platforms", value: platforms, type: nil)
56
58
  let args = [platformsArg]
59
+ .filter { $0?.value != nil }
57
60
  .compactMap { $0 }
58
61
  let command = RubyCommand(commandID: "", methodName: "add_extra_platforms", className: nil, args: args)
59
62
  _ = runner.executeCommand(command)
@@ -89,7 +92,7 @@ public func addGitTag(tag: OptionalConfigValue<String?> = .fastlaneDefault(nil),
89
92
  includesLane: Bool = true,
90
93
  prefix: String = "",
91
94
  postfix: String = "",
92
- buildNumber: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
95
+ buildNumber: Any? = nil,
93
96
  message: OptionalConfigValue<String?> = .fastlaneDefault(nil),
94
97
  commit: OptionalConfigValue<String?> = .fastlaneDefault(nil),
95
98
  force: Bool = false,
@@ -100,7 +103,7 @@ public func addGitTag(tag: OptionalConfigValue<String?> = .fastlaneDefault(nil),
100
103
  let includesLaneArg = RubyCommand.Argument(name: "includes_lane", value: includesLane, type: nil)
101
104
  let prefixArg = RubyCommand.Argument(name: "prefix", value: prefix, type: nil)
102
105
  let postfixArg = RubyCommand.Argument(name: "postfix", value: postfix, type: nil)
103
- let buildNumberArg = buildNumber.asRubyArgument(name: "build_number", type: nil)
106
+ let buildNumberArg = RubyCommand.Argument(name: "build_number", value: buildNumber, type: nil)
104
107
  let messageArg = message.asRubyArgument(name: "message", type: nil)
105
108
  let commitArg = commit.asRubyArgument(name: "commit", type: nil)
106
109
  let forceArg = RubyCommand.Argument(name: "force", value: force, type: nil)
@@ -115,6 +118,7 @@ public func addGitTag(tag: OptionalConfigValue<String?> = .fastlaneDefault(nil),
115
118
  commitArg,
116
119
  forceArg,
117
120
  signArg]
121
+ .filter { $0?.value != nil }
118
122
  .compactMap { $0 }
119
123
  let command = RubyCommand(commandID: "", methodName: "add_git_tag", className: nil, args: args)
120
124
  _ = runner.executeCommand(command)
@@ -143,7 +147,7 @@ public func appStoreBuildNumber(apiKeyPath: OptionalConfigValue<String?> = .fast
143
147
  initialBuildNumber: Any,
144
148
  appIdentifier: String,
145
149
  username: OptionalConfigValue<String?> = .fastlaneDefault(nil),
146
- teamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
150
+ teamId: Any? = nil,
147
151
  live: Bool = true,
148
152
  version: OptionalConfigValue<String?> = .fastlaneDefault(nil),
149
153
  platform: String = "ios",
@@ -154,7 +158,7 @@ public func appStoreBuildNumber(apiKeyPath: OptionalConfigValue<String?> = .fast
154
158
  let initialBuildNumberArg = RubyCommand.Argument(name: "initial_build_number", value: initialBuildNumber, type: nil)
155
159
  let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
156
160
  let usernameArg = username.asRubyArgument(name: "username", type: nil)
157
- let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
161
+ let teamIdArg = RubyCommand.Argument(name: "team_id", value: teamId, type: nil)
158
162
  let liveArg = RubyCommand.Argument(name: "live", value: live, type: nil)
159
163
  let versionArg = version.asRubyArgument(name: "version", type: nil)
160
164
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
@@ -169,6 +173,7 @@ public func appStoreBuildNumber(apiKeyPath: OptionalConfigValue<String?> = .fast
169
173
  versionArg,
170
174
  platformArg,
171
175
  teamNameArg]
176
+ .filter { $0?.value != nil }
172
177
  .compactMap { $0 }
173
178
  let command = RubyCommand(commandID: "", methodName: "app_store_build_number", className: nil, args: args)
174
179
  _ = runner.executeCommand(command)
@@ -185,6 +190,7 @@ public func appStoreBuildNumber(apiKeyPath: OptionalConfigValue<String?> = .fast
185
190
  - isKeyContentBase64: Whether :key_content is Base64 encoded or not
186
191
  - duration: The token session duration
187
192
  - inHouse: Is App Store or Enterprise (in house) team? App Store Connect API cannot determine this on its own (yet)
193
+ - setSpaceshipToken: Authorizes all Spaceship::ConnectAPI requests by automatically setting Spaceship::ConnectAPI.token
188
194
 
189
195
  Load the App Store Connect API token to use in other fastlane tools and actions
190
196
  */
@@ -194,7 +200,8 @@ public func appStoreConnectApiKey(keyId: String,
194
200
  keyContent: OptionalConfigValue<String?> = .fastlaneDefault(nil),
195
201
  isKeyContentBase64: Bool = false,
196
202
  duration: Int = 1200,
197
- inHouse: OptionalConfigValue<Bool?> = .fastlaneDefault(nil))
203
+ inHouse: Bool = false,
204
+ setSpaceshipToken: Bool = true)
198
205
  {
199
206
  let keyIdArg = RubyCommand.Argument(name: "key_id", value: keyId, type: nil)
200
207
  let issuerIdArg = RubyCommand.Argument(name: "issuer_id", value: issuerId, type: nil)
@@ -202,14 +209,17 @@ public func appStoreConnectApiKey(keyId: String,
202
209
  let keyContentArg = keyContent.asRubyArgument(name: "key_content", type: nil)
203
210
  let isKeyContentBase64Arg = RubyCommand.Argument(name: "is_key_content_base64", value: isKeyContentBase64, type: nil)
204
211
  let durationArg = RubyCommand.Argument(name: "duration", value: duration, type: nil)
205
- let inHouseArg = inHouse.asRubyArgument(name: "in_house", type: nil)
212
+ let inHouseArg = RubyCommand.Argument(name: "in_house", value: inHouse, type: nil)
213
+ let setSpaceshipTokenArg = RubyCommand.Argument(name: "set_spaceship_token", value: setSpaceshipToken, type: nil)
206
214
  let args = [keyIdArg,
207
215
  issuerIdArg,
208
216
  keyFilepathArg,
209
217
  keyContentArg,
210
218
  isKeyContentBase64Arg,
211
219
  durationArg,
212
- inHouseArg]
220
+ inHouseArg,
221
+ setSpaceshipTokenArg]
222
+ .filter { $0?.value != nil }
213
223
  .compactMap { $0 }
214
224
  let command = RubyCommand(commandID: "", methodName: "app_store_connect_api_key", className: nil, args: args)
215
225
  _ = runner.executeCommand(command)
@@ -261,6 +271,7 @@ public func appaloosa(binary: String,
261
271
  deviceArg,
262
272
  descriptionArg,
263
273
  changelogArg]
274
+ .filter { $0?.value != nil }
264
275
  .compactMap { $0 }
265
276
  let command = RubyCommand(commandID: "", methodName: "appaloosa", className: nil, args: args)
266
277
  _ = runner.executeCommand(command)
@@ -308,6 +319,7 @@ public func appetize(apiHost: String = "api.appetize.io",
308
319
  publicKeyArg,
309
320
  noteArg,
310
321
  timeoutArg]
322
+ .filter { $0?.value != nil }
311
323
  .compactMap { $0 }
312
324
  let command = RubyCommand(commandID: "", methodName: "appetize", className: nil, args: args)
313
325
  _ = runner.executeCommand(command)
@@ -367,6 +379,7 @@ public func appetizeViewingUrlGenerator(publicKey: String,
367
379
  osVersionArg,
368
380
  paramsArg,
369
381
  proxyArg]
382
+ .filter { $0?.value != nil }
370
383
  .compactMap { $0 }
371
384
  let command = RubyCommand(commandID: "", methodName: "appetize_viewing_url_generator", className: nil, args: args)
372
385
  _ = runner.executeCommand(command)
@@ -414,6 +427,7 @@ public func appium(platform: String,
414
427
  appiumPathArg,
415
428
  capsArg,
416
429
  appiumLibArg]
430
+ .filter { $0?.value != nil }
417
431
  .compactMap { $0 }
418
432
  let command = RubyCommand(commandID: "", methodName: "appium", className: nil, args: args)
419
433
  _ = runner.executeCommand(command)
@@ -476,8 +490,8 @@ public func appledoc(input: Any,
476
490
  templates: OptionalConfigValue<String?> = .fastlaneDefault(nil),
477
491
  docsetInstallPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
478
492
  include: OptionalConfigValue<String?> = .fastlaneDefault(nil),
479
- ignore: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
480
- excludeOutput: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
493
+ ignore: Any? = nil,
494
+ excludeOutput: Any? = nil,
481
495
  indexDesc: OptionalConfigValue<String?> = .fastlaneDefault(nil),
482
496
  projectName: String,
483
497
  projectVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -514,16 +528,16 @@ public func appledoc(input: Any,
514
528
  exitThreshold: Int = 2,
515
529
  docsSectionTitle: OptionalConfigValue<String?> = .fastlaneDefault(nil),
516
530
  warnings: OptionalConfigValue<String?> = .fastlaneDefault(nil),
517
- logformat: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
518
- verbose: OptionalConfigValue<Any?> = .fastlaneDefault(nil))
531
+ logformat: Any? = nil,
532
+ verbose: Any? = nil)
519
533
  {
520
534
  let inputArg = RubyCommand.Argument(name: "input", value: input, type: nil)
521
535
  let outputArg = output.asRubyArgument(name: "output", type: nil)
522
536
  let templatesArg = templates.asRubyArgument(name: "templates", type: nil)
523
537
  let docsetInstallPathArg = docsetInstallPath.asRubyArgument(name: "docset_install_path", type: nil)
524
538
  let includeArg = include.asRubyArgument(name: "include", type: nil)
525
- let ignoreArg = ignore.asRubyArgument(name: "ignore", type: nil)
526
- let excludeOutputArg = excludeOutput.asRubyArgument(name: "exclude_output", type: nil)
539
+ let ignoreArg = RubyCommand.Argument(name: "ignore", value: ignore, type: nil)
540
+ let excludeOutputArg = RubyCommand.Argument(name: "exclude_output", value: excludeOutput, type: nil)
527
541
  let indexDescArg = indexDesc.asRubyArgument(name: "index_desc", type: nil)
528
542
  let projectNameArg = RubyCommand.Argument(name: "project_name", value: projectName, type: nil)
529
543
  let projectVersionArg = projectVersion.asRubyArgument(name: "project_version", type: nil)
@@ -560,8 +574,8 @@ public func appledoc(input: Any,
560
574
  let exitThresholdArg = RubyCommand.Argument(name: "exit_threshold", value: exitThreshold, type: nil)
561
575
  let docsSectionTitleArg = docsSectionTitle.asRubyArgument(name: "docs_section_title", type: nil)
562
576
  let warningsArg = warnings.asRubyArgument(name: "warnings", type: nil)
563
- let logformatArg = logformat.asRubyArgument(name: "logformat", type: nil)
564
- let verboseArg = verbose.asRubyArgument(name: "verbose", type: nil)
577
+ let logformatArg = RubyCommand.Argument(name: "logformat", value: logformat, type: nil)
578
+ let verboseArg = RubyCommand.Argument(name: "verbose", value: verbose, type: nil)
565
579
  let args = [inputArg,
566
580
  outputArg,
567
581
  templatesArg,
@@ -607,6 +621,7 @@ public func appledoc(input: Any,
607
621
  warningsArg,
608
622
  logformatArg,
609
623
  verboseArg]
624
+ .filter { $0?.value != nil }
610
625
  .compactMap { $0 }
611
626
  let command = RubyCommand(commandID: "", methodName: "appledoc", className: nil, args: args)
612
627
  _ = runner.executeCommand(command)
@@ -661,7 +676,7 @@ public func appledoc(input: Any,
661
676
  - primarySecondSubCategory: Metadata: The english name of the primary second sub category (e.g. `Educational`, `Puzzle`)
662
677
  - secondaryFirstSubCategory: Metadata: The english name of the secondary first sub category (e.g. `Educational`, `Puzzle`)
663
678
  - secondarySecondSubCategory: Metadata: The english name of the secondary second sub category (e.g. `Educational`, `Puzzle`)
664
- - tradeRepresentativeContactInformation: Metadata: A hash containing the trade representative contact information
679
+ - tradeRepresentativeContactInformation: **DEPRECATED!** This is no longer used by App Store Connect - Metadata: A hash containing the trade representative contact information
665
680
  - appReviewInformation: Metadata: A hash containing the review information
666
681
  - appReviewAttachmentFile: Metadata: Path to the app review attachment file
667
682
  - description: Metadata: The localised app description
@@ -711,16 +726,16 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
711
726
  autoReleaseDate: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
712
727
  phasedRelease: Bool = false,
713
728
  resetRatings: Bool = false,
714
- priceTier: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
729
+ priceTier: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
715
730
  appRatingConfigPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
716
731
  submissionInformation: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
717
- teamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
732
+ teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
718
733
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
719
734
  devPortalTeamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
720
735
  devPortalTeamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
721
736
  itcProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
722
737
  runPrecheckBeforeSubmit: Bool = true,
723
- precheckDefaultRuleLevel: Any = "warn",
738
+ precheckDefaultRuleLevel: String = "warn",
724
739
  individualMetadataItems: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
725
740
  appIcon: OptionalConfigValue<String?> = .fastlaneDefault(nil),
726
741
  appleWatchAppIcon: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -734,20 +749,20 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
734
749
  tradeRepresentativeContactInformation: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
735
750
  appReviewInformation: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
736
751
  appReviewAttachmentFile: OptionalConfigValue<String?> = .fastlaneDefault(nil),
737
- description: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
738
- name: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
752
+ description: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
753
+ name: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
739
754
  subtitle: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
740
755
  keywords: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
741
756
  promotionalText: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
742
- releaseNotes: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
743
- privacyUrl: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
744
- appleTvPrivacyPolicy: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
745
- supportUrl: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
746
- marketingUrl: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
757
+ releaseNotes: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
758
+ privacyUrl: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
759
+ appleTvPrivacyPolicy: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
760
+ supportUrl: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
761
+ marketingUrl: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
747
762
  languages: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
748
763
  ignoreLanguageDirectoryValidation: Bool = false,
749
764
  precheckIncludeInAppPurchases: Bool = true,
750
- app: Any)
765
+ app: OptionalConfigValue<Int?> = .fastlaneDefault(nil))
751
766
  {
752
767
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
753
768
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -810,7 +825,7 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
810
825
  let languagesArg = languages.asRubyArgument(name: "languages", type: nil)
811
826
  let ignoreLanguageDirectoryValidationArg = RubyCommand.Argument(name: "ignore_language_directory_validation", value: ignoreLanguageDirectoryValidation, type: nil)
812
827
  let precheckIncludeInAppPurchasesArg = RubyCommand.Argument(name: "precheck_include_in_app_purchases", value: precheckIncludeInAppPurchases, type: nil)
813
- let appArg = RubyCommand.Argument(name: "app", value: app, type: nil)
828
+ let appArg = app.asRubyArgument(name: "app", type: nil)
814
829
  let args = [apiKeyPathArg,
815
830
  apiKeyArg,
816
831
  usernameArg,
@@ -873,6 +888,7 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
873
888
  ignoreLanguageDirectoryValidationArg,
874
889
  precheckIncludeInAppPurchasesArg,
875
890
  appArg]
891
+ .filter { $0?.value != nil }
876
892
  .compactMap { $0 }
877
893
  let command = RubyCommand(commandID: "", methodName: "appstore", className: nil, args: args)
878
894
  _ = runner.executeCommand(command)
@@ -896,6 +912,7 @@ public func apteligent(dsym: OptionalConfigValue<String?> = .fastlaneDefault(nil
896
912
  let args = [dsymArg,
897
913
  appIdArg,
898
914
  apiKeyArg]
915
+ .filter { $0?.value != nil }
899
916
  .compactMap { $0 }
900
917
  let command = RubyCommand(commandID: "", methodName: "apteligent", className: nil, args: args)
901
918
  _ = runner.executeCommand(command)
@@ -969,6 +986,7 @@ public func artifactory(file: String,
969
986
  proxyAddressArg,
970
987
  proxyPortArg,
971
988
  readTimeoutArg]
989
+ .filter { $0?.value != nil }
972
990
  .compactMap { $0 }
973
991
  let command = RubyCommand(commandID: "", methodName: "artifactory", className: nil, args: args)
974
992
  _ = runner.executeCommand(command)
@@ -1016,6 +1034,7 @@ public func automaticCodeSigning(path: String,
1016
1034
  profileNameArg,
1017
1035
  profileUuidArg,
1018
1036
  bundleIdentifierArg]
1037
+ .filter { $0?.value != nil }
1019
1038
  .compactMap { $0 }
1020
1039
  let command = RubyCommand(commandID: "", methodName: "automatic_code_signing", className: nil, args: args)
1021
1040
  _ = runner.executeCommand(command)
@@ -1029,6 +1048,7 @@ public func automaticCodeSigning(path: String,
1029
1048
  public func backupFile(path: String) {
1030
1049
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
1031
1050
  let args = [pathArg]
1051
+ .filter { $0?.value != nil }
1032
1052
  .compactMap { $0 }
1033
1053
  let command = RubyCommand(commandID: "", methodName: "backup_file", className: nil, args: args)
1034
1054
  _ = runner.executeCommand(command)
@@ -1060,6 +1080,7 @@ public func backupXcarchive(xcarchive: String,
1060
1080
  zipArg,
1061
1081
  zipFilenameArg,
1062
1082
  versionedArg]
1083
+ .filter { $0?.value != nil }
1063
1084
  .compactMap { $0 }
1064
1085
  let command = RubyCommand(commandID: "", methodName: "backup_xcarchive", className: nil, args: args)
1065
1086
  _ = runner.executeCommand(command)
@@ -1087,29 +1108,29 @@ public func backupXcarchive(xcarchive: String,
1087
1108
  More info: [https://github.com/HazAT/badge](https://github.com/HazAT/badge)
1088
1109
  **Note**: If you want to reset the badge back to default, you can use `sh 'git checkout -- <path>/Assets.xcassets/'`.
1089
1110
  */
1090
- public func badge(dark: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
1111
+ public func badge(dark: Any? = nil,
1091
1112
  custom: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1092
- noBadge: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
1113
+ noBadge: Any? = nil,
1093
1114
  shield: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1094
- alpha: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
1115
+ alpha: Any? = nil,
1095
1116
  path: String = ".",
1096
- shieldIoTimeout: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
1117
+ shieldIoTimeout: Any? = nil,
1097
1118
  glob: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1098
- alphaChannel: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
1119
+ alphaChannel: Any? = nil,
1099
1120
  shieldGravity: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1100
- shieldNoResize: OptionalConfigValue<Any?> = .fastlaneDefault(nil))
1121
+ shieldNoResize: Any? = nil)
1101
1122
  {
1102
- let darkArg = dark.asRubyArgument(name: "dark", type: nil)
1123
+ let darkArg = RubyCommand.Argument(name: "dark", value: dark, type: nil)
1103
1124
  let customArg = custom.asRubyArgument(name: "custom", type: nil)
1104
- let noBadgeArg = noBadge.asRubyArgument(name: "no_badge", type: nil)
1125
+ let noBadgeArg = RubyCommand.Argument(name: "no_badge", value: noBadge, type: nil)
1105
1126
  let shieldArg = shield.asRubyArgument(name: "shield", type: nil)
1106
- let alphaArg = alpha.asRubyArgument(name: "alpha", type: nil)
1127
+ let alphaArg = RubyCommand.Argument(name: "alpha", value: alpha, type: nil)
1107
1128
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
1108
- let shieldIoTimeoutArg = shieldIoTimeout.asRubyArgument(name: "shield_io_timeout", type: nil)
1129
+ let shieldIoTimeoutArg = RubyCommand.Argument(name: "shield_io_timeout", value: shieldIoTimeout, type: nil)
1109
1130
  let globArg = glob.asRubyArgument(name: "glob", type: nil)
1110
- let alphaChannelArg = alphaChannel.asRubyArgument(name: "alpha_channel", type: nil)
1131
+ let alphaChannelArg = RubyCommand.Argument(name: "alpha_channel", value: alphaChannel, type: nil)
1111
1132
  let shieldGravityArg = shieldGravity.asRubyArgument(name: "shield_gravity", type: nil)
1112
- let shieldNoResizeArg = shieldNoResize.asRubyArgument(name: "shield_no_resize", type: nil)
1133
+ let shieldNoResizeArg = RubyCommand.Argument(name: "shield_no_resize", value: shieldNoResize, type: nil)
1113
1134
  let args = [darkArg,
1114
1135
  customArg,
1115
1136
  noBadgeArg,
@@ -1121,6 +1142,7 @@ public func badge(dark: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
1121
1142
  alphaChannelArg,
1122
1143
  shieldGravityArg,
1123
1144
  shieldNoResizeArg]
1145
+ .filter { $0?.value != nil }
1124
1146
  .compactMap { $0 }
1125
1147
  let command = RubyCommand(commandID: "", methodName: "badge", className: nil, args: args)
1126
1148
  _ = runner.executeCommand(command)
@@ -1159,6 +1181,7 @@ public func buildAndUploadToAppetize(xcodebuild: [String: Any] = [:],
1159
1181
  publicKeyArg,
1160
1182
  noteArg,
1161
1183
  timeoutArg]
1184
+ .filter { $0?.value != nil }
1162
1185
  .compactMap { $0 }
1163
1186
  let command = RubyCommand(commandID: "", methodName: "build_and_upload_to_appetize", className: nil, args: args)
1164
1187
  _ = runner.executeCommand(command)
@@ -1192,8 +1215,8 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1192
1215
  flags: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1193
1216
  projectDir: String = ".",
1194
1217
  gradlePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1195
- properties: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
1196
- systemProperties: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
1218
+ properties: Any? = nil,
1219
+ systemProperties: Any? = nil,
1197
1220
  serial: String = "",
1198
1221
  printCommand: Bool = true,
1199
1222
  printCommandOutput: Bool = true)
@@ -1205,8 +1228,8 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1205
1228
  let flagsArg = flags.asRubyArgument(name: "flags", type: nil)
1206
1229
  let projectDirArg = RubyCommand.Argument(name: "project_dir", value: projectDir, type: nil)
1207
1230
  let gradlePathArg = gradlePath.asRubyArgument(name: "gradle_path", type: nil)
1208
- let propertiesArg = properties.asRubyArgument(name: "properties", type: nil)
1209
- let systemPropertiesArg = systemProperties.asRubyArgument(name: "system_properties", type: nil)
1231
+ let propertiesArg = RubyCommand.Argument(name: "properties", value: properties, type: nil)
1232
+ let systemPropertiesArg = RubyCommand.Argument(name: "system_properties", value: systemProperties, type: nil)
1210
1233
  let serialArg = RubyCommand.Argument(name: "serial", value: serial, type: nil)
1211
1234
  let printCommandArg = RubyCommand.Argument(name: "print_command", value: printCommand, type: nil)
1212
1235
  let printCommandOutputArg = RubyCommand.Argument(name: "print_command_output", value: printCommandOutput, type: nil)
@@ -1222,6 +1245,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1222
1245
  serialArg,
1223
1246
  printCommandArg,
1224
1247
  printCommandOutputArg]
1248
+ .filter { $0?.value != nil }
1225
1249
  .compactMap { $0 }
1226
1250
  let command = RubyCommand(commandID: "", methodName: "build_android_app", className: nil, args: args)
1227
1251
  _ = runner.executeCommand(command)
@@ -1425,6 +1449,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1425
1449
  skipPackageDependenciesResolutionArg,
1426
1450
  disablePackageAutomaticUpdatesArg,
1427
1451
  useSystemScmArg]
1452
+ .filter { $0?.value != nil }
1428
1453
  .compactMap { $0 }
1429
1454
  let command = RubyCommand(commandID: "", methodName: "build_app", className: nil, args: args)
1430
1455
  return runner.executeCommand(command)
@@ -1616,6 +1641,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1616
1641
  skipPackageDependenciesResolutionArg,
1617
1642
  disablePackageAutomaticUpdatesArg,
1618
1643
  useSystemScmArg]
1644
+ .filter { $0?.value != nil }
1619
1645
  .compactMap { $0 }
1620
1646
  let command = RubyCommand(commandID: "", methodName: "build_ios_app", className: nil, args: args)
1621
1647
  return runner.executeCommand(command)
@@ -1811,6 +1837,7 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1811
1837
  skipPackageDependenciesResolutionArg,
1812
1838
  disablePackageAutomaticUpdatesArg,
1813
1839
  useSystemScmArg]
1840
+ .filter { $0?.value != nil }
1814
1841
  .compactMap { $0 }
1815
1842
  let command = RubyCommand(commandID: "", methodName: "build_mac_app", className: nil, args: args)
1816
1843
  return runner.executeCommand(command)
@@ -1894,6 +1921,7 @@ public func bundleInstall(binstubs: OptionalConfigValue<String?> = .fastlaneDefa
1894
1921
  trustPolicyArg,
1895
1922
  withoutArg,
1896
1923
  withArg]
1924
+ .filter { $0?.value != nil }
1897
1925
  .compactMap { $0 }
1898
1926
  let command = RubyCommand(commandID: "", methodName: "bundle_install", className: nil, args: args)
1899
1927
  _ = runner.executeCommand(command)
@@ -1993,6 +2021,7 @@ public func captureAndroidScreenshots(androidHome: OptionalConfigValue<String?>
1993
2021
  reinstallAppArg,
1994
2022
  useTimestampSuffixArg,
1995
2023
  adbHostArg]
2024
+ .filter { $0?.value != nil }
1996
2025
  .compactMap { $0 }
1997
2026
  let command = RubyCommand(commandID: "", methodName: "capture_android_screenshots", className: nil, args: args)
1998
2027
  _ = runner.executeCommand(command)
@@ -2087,15 +2116,15 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2087
2116
  derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2088
2117
  resultBundle: Bool = false,
2089
2118
  testTargetName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2090
- namespaceLogFiles: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2119
+ namespaceLogFiles: Any? = nil,
2091
2120
  concurrentSimulators: Bool = true,
2092
2121
  disableSlideToType: Bool = false,
2093
2122
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2094
2123
  skipPackageDependenciesResolution: Bool = false,
2095
2124
  disablePackageAutomaticUpdates: Bool = false,
2096
2125
  testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2097
- onlyTesting: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2098
- skipTesting: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2126
+ onlyTesting: Any? = nil,
2127
+ skipTesting: Any? = nil,
2099
2128
  disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
2100
2129
  suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
2101
2130
  useSystemScm: Bool = false)
@@ -2136,15 +2165,15 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2136
2165
  let derivedDataPathArg = derivedDataPath.asRubyArgument(name: "derived_data_path", type: nil)
2137
2166
  let resultBundleArg = RubyCommand.Argument(name: "result_bundle", value: resultBundle, type: nil)
2138
2167
  let testTargetNameArg = testTargetName.asRubyArgument(name: "test_target_name", type: nil)
2139
- let namespaceLogFilesArg = namespaceLogFiles.asRubyArgument(name: "namespace_log_files", type: nil)
2168
+ let namespaceLogFilesArg = RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles, type: nil)
2140
2169
  let concurrentSimulatorsArg = RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators, type: nil)
2141
2170
  let disableSlideToTypeArg = RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType, type: nil)
2142
2171
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
2143
2172
  let skipPackageDependenciesResolutionArg = RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution, type: nil)
2144
2173
  let disablePackageAutomaticUpdatesArg = RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates, type: nil)
2145
2174
  let testplanArg = testplan.asRubyArgument(name: "testplan", type: nil)
2146
- let onlyTestingArg = onlyTesting.asRubyArgument(name: "only_testing", type: nil)
2147
- let skipTestingArg = skipTesting.asRubyArgument(name: "skip_testing", type: nil)
2175
+ let onlyTestingArg = RubyCommand.Argument(name: "only_testing", value: onlyTesting, type: nil)
2176
+ let skipTestingArg = RubyCommand.Argument(name: "skip_testing", value: skipTesting, type: nil)
2148
2177
  let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
2149
2178
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
2150
2179
  let useSystemScmArg = RubyCommand.Argument(name: "use_system_scm", value: useSystemScm, type: nil)
@@ -2196,6 +2225,7 @@ public func captureIosScreenshots(workspace: OptionalConfigValue<String?> = .fas
2196
2225
  disableXcprettyArg,
2197
2226
  suppressXcodeOutputArg,
2198
2227
  useSystemScmArg]
2228
+ .filter { $0?.value != nil }
2199
2229
  .compactMap { $0 }
2200
2230
  let command = RubyCommand(commandID: "", methodName: "capture_ios_screenshots", className: nil, args: args)
2201
2231
  _ = runner.executeCommand(command)
@@ -2290,15 +2320,15 @@ public func captureScreenshots(workspace: OptionalConfigValue<String?> = .fastla
2290
2320
  derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2291
2321
  resultBundle: Bool = false,
2292
2322
  testTargetName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2293
- namespaceLogFiles: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2323
+ namespaceLogFiles: Any? = nil,
2294
2324
  concurrentSimulators: Bool = true,
2295
2325
  disableSlideToType: Bool = false,
2296
2326
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2297
2327
  skipPackageDependenciesResolution: Bool = false,
2298
2328
  disablePackageAutomaticUpdates: Bool = false,
2299
2329
  testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2300
- onlyTesting: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2301
- skipTesting: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2330
+ onlyTesting: Any? = nil,
2331
+ skipTesting: Any? = nil,
2302
2332
  disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
2303
2333
  suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
2304
2334
  useSystemScm: Bool = false)
@@ -2339,15 +2369,15 @@ public func captureScreenshots(workspace: OptionalConfigValue<String?> = .fastla
2339
2369
  let derivedDataPathArg = derivedDataPath.asRubyArgument(name: "derived_data_path", type: nil)
2340
2370
  let resultBundleArg = RubyCommand.Argument(name: "result_bundle", value: resultBundle, type: nil)
2341
2371
  let testTargetNameArg = testTargetName.asRubyArgument(name: "test_target_name", type: nil)
2342
- let namespaceLogFilesArg = namespaceLogFiles.asRubyArgument(name: "namespace_log_files", type: nil)
2372
+ let namespaceLogFilesArg = RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles, type: nil)
2343
2373
  let concurrentSimulatorsArg = RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators, type: nil)
2344
2374
  let disableSlideToTypeArg = RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType, type: nil)
2345
2375
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
2346
2376
  let skipPackageDependenciesResolutionArg = RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution, type: nil)
2347
2377
  let disablePackageAutomaticUpdatesArg = RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates, type: nil)
2348
2378
  let testplanArg = testplan.asRubyArgument(name: "testplan", type: nil)
2349
- let onlyTestingArg = onlyTesting.asRubyArgument(name: "only_testing", type: nil)
2350
- let skipTestingArg = skipTesting.asRubyArgument(name: "skip_testing", type: nil)
2379
+ let onlyTestingArg = RubyCommand.Argument(name: "only_testing", value: onlyTesting, type: nil)
2380
+ let skipTestingArg = RubyCommand.Argument(name: "skip_testing", value: skipTesting, type: nil)
2351
2381
  let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
2352
2382
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
2353
2383
  let useSystemScmArg = RubyCommand.Argument(name: "use_system_scm", value: useSystemScm, type: nil)
@@ -2399,6 +2429,7 @@ public func captureScreenshots(workspace: OptionalConfigValue<String?> = .fastla
2399
2429
  disableXcprettyArg,
2400
2430
  suppressXcodeOutputArg,
2401
2431
  useSystemScmArg]
2432
+ .filter { $0?.value != nil }
2402
2433
  .compactMap { $0 }
2403
2434
  let command = RubyCommand(commandID: "", methodName: "capture_screenshots", className: nil, args: args)
2404
2435
  _ = runner.executeCommand(command)
@@ -2502,6 +2533,7 @@ public func carthage(command: String = "bootstrap",
2502
2533
  useXcframeworksArg,
2503
2534
  archiveArg,
2504
2535
  executableArg]
2536
+ .filter { $0?.value != nil }
2505
2537
  .compactMap { $0 }
2506
2538
  let command = RubyCommand(commandID: "", methodName: "carthage", className: nil, args: args)
2507
2539
  _ = runner.executeCommand(command)
@@ -2576,6 +2608,7 @@ public func cert(development: Bool = false,
2576
2608
  keychainPasswordArg,
2577
2609
  skipSetPartitionListArg,
2578
2610
  platformArg]
2611
+ .filter { $0?.value != nil }
2579
2612
  .compactMap { $0 }
2580
2613
  let command = RubyCommand(commandID: "", methodName: "cert", className: nil, args: args)
2581
2614
  _ = runner.executeCommand(command)
@@ -2601,7 +2634,7 @@ public func cert(development: Bool = false,
2601
2634
 
2602
2635
  By default, messages will be collected back to the last tag, but the range can be controlled
2603
2636
  */
2604
- @discardableResult public func changelogFromGitCommits(between: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2637
+ @discardableResult public func changelogFromGitCommits(between: Any? = nil,
2605
2638
  commitsCount: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
2606
2639
  path: String = "./",
2607
2640
  pretty: String = "%B",
@@ -2613,7 +2646,7 @@ public func cert(development: Bool = false,
2613
2646
  includeMerges: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
2614
2647
  mergeCommitFiltering: String = "include_merges") -> String
2615
2648
  {
2616
- let betweenArg = between.asRubyArgument(name: "between", type: nil)
2649
+ let betweenArg = RubyCommand.Argument(name: "between", value: between, type: nil)
2617
2650
  let commitsCountArg = commitsCount.asRubyArgument(name: "commits_count", type: nil)
2618
2651
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
2619
2652
  let prettyArg = RubyCommand.Argument(name: "pretty", value: pretty, type: nil)
@@ -2635,6 +2668,7 @@ public func cert(development: Bool = false,
2635
2668
  quietArg,
2636
2669
  includeMergesArg,
2637
2670
  mergeCommitFilteringArg]
2671
+ .filter { $0?.value != nil }
2638
2672
  .compactMap { $0 }
2639
2673
  let command = RubyCommand(commandID: "", methodName: "changelog_from_git_commits", className: nil, args: args)
2640
2674
  return runner.executeCommand(command)
@@ -2664,6 +2698,7 @@ public func chatwork(apiToken: String,
2664
2698
  messageArg,
2665
2699
  roomidArg,
2666
2700
  successArg]
2701
+ .filter { $0?.value != nil }
2667
2702
  .compactMap { $0 }
2668
2703
  let command = RubyCommand(commandID: "", methodName: "chatwork", className: nil, args: args)
2669
2704
  _ = runner.executeCommand(command)
@@ -2708,16 +2743,16 @@ public func chatwork(apiToken: String,
2708
2743
  defaultRuleLevel: Any = "error",
2709
2744
  includeInAppPurchases: Bool = true,
2710
2745
  useLive: Bool = false,
2711
- negativeAppleSentiment: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2712
- placeholderText: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2713
- otherPlatforms: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2714
- futureFunctionality: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2715
- testWords: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2716
- curseWords: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2717
- freeStuffInIap: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2718
- customText: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2719
- copyrightDate: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
2720
- unreachableUrls: OptionalConfigValue<Any?> = .fastlaneDefault(nil)) -> Bool
2746
+ negativeAppleSentiment: Any? = nil,
2747
+ placeholderText: Any? = nil,
2748
+ otherPlatforms: Any? = nil,
2749
+ futureFunctionality: Any? = nil,
2750
+ testWords: Any? = nil,
2751
+ curseWords: Any? = nil,
2752
+ freeStuffInIap: Any? = nil,
2753
+ customText: Any? = nil,
2754
+ copyrightDate: Any? = nil,
2755
+ unreachableUrls: Any? = nil) -> Bool
2721
2756
  {
2722
2757
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
2723
2758
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -2729,16 +2764,16 @@ public func chatwork(apiToken: String,
2729
2764
  let defaultRuleLevelArg = RubyCommand.Argument(name: "default_rule_level", value: defaultRuleLevel, type: nil)
2730
2765
  let includeInAppPurchasesArg = RubyCommand.Argument(name: "include_in_app_purchases", value: includeInAppPurchases, type: nil)
2731
2766
  let useLiveArg = RubyCommand.Argument(name: "use_live", value: useLive, type: nil)
2732
- let negativeAppleSentimentArg = negativeAppleSentiment.asRubyArgument(name: "negative_apple_sentiment", type: nil)
2733
- let placeholderTextArg = placeholderText.asRubyArgument(name: "placeholder_text", type: nil)
2734
- let otherPlatformsArg = otherPlatforms.asRubyArgument(name: "other_platforms", type: nil)
2735
- let futureFunctionalityArg = futureFunctionality.asRubyArgument(name: "future_functionality", type: nil)
2736
- let testWordsArg = testWords.asRubyArgument(name: "test_words", type: nil)
2737
- let curseWordsArg = curseWords.asRubyArgument(name: "curse_words", type: nil)
2738
- let freeStuffInIapArg = freeStuffInIap.asRubyArgument(name: "free_stuff_in_iap", type: nil)
2739
- let customTextArg = customText.asRubyArgument(name: "custom_text", type: nil)
2740
- let copyrightDateArg = copyrightDate.asRubyArgument(name: "copyright_date", type: nil)
2741
- let unreachableUrlsArg = unreachableUrls.asRubyArgument(name: "unreachable_urls", type: nil)
2767
+ let negativeAppleSentimentArg = RubyCommand.Argument(name: "negative_apple_sentiment", value: negativeAppleSentiment, type: nil)
2768
+ let placeholderTextArg = RubyCommand.Argument(name: "placeholder_text", value: placeholderText, type: nil)
2769
+ let otherPlatformsArg = RubyCommand.Argument(name: "other_platforms", value: otherPlatforms, type: nil)
2770
+ let futureFunctionalityArg = RubyCommand.Argument(name: "future_functionality", value: futureFunctionality, type: nil)
2771
+ let testWordsArg = RubyCommand.Argument(name: "test_words", value: testWords, type: nil)
2772
+ let curseWordsArg = RubyCommand.Argument(name: "curse_words", value: curseWords, type: nil)
2773
+ let freeStuffInIapArg = RubyCommand.Argument(name: "free_stuff_in_iap", value: freeStuffInIap, type: nil)
2774
+ let customTextArg = RubyCommand.Argument(name: "custom_text", value: customText, type: nil)
2775
+ let copyrightDateArg = RubyCommand.Argument(name: "copyright_date", value: copyrightDate, type: nil)
2776
+ let unreachableUrlsArg = RubyCommand.Argument(name: "unreachable_urls", value: unreachableUrls, type: nil)
2742
2777
  let args = [apiKeyPathArg,
2743
2778
  apiKeyArg,
2744
2779
  appIdentifierArg,
@@ -2759,6 +2794,7 @@ public func chatwork(apiToken: String,
2759
2794
  customTextArg,
2760
2795
  copyrightDateArg,
2761
2796
  unreachableUrlsArg]
2797
+ .filter { $0?.value != nil }
2762
2798
  .compactMap { $0 }
2763
2799
  let command = RubyCommand(commandID: "", methodName: "check_app_store_metadata", className: nil, args: args)
2764
2800
  return parseBool(fromString: runner.executeCommand(command))
@@ -2776,6 +2812,7 @@ public func chatwork(apiToken: String,
2776
2812
  public func cleanBuildArtifacts(excludePattern: OptionalConfigValue<String?> = .fastlaneDefault(nil)) {
2777
2813
  let excludePatternArg = excludePattern.asRubyArgument(name: "exclude_pattern", type: nil)
2778
2814
  let args = [excludePatternArg]
2815
+ .filter { $0?.value != nil }
2779
2816
  .compactMap { $0 }
2780
2817
  let command = RubyCommand(commandID: "", methodName: "clean_build_artifacts", className: nil, args: args)
2781
2818
  _ = runner.executeCommand(command)
@@ -2789,6 +2826,7 @@ public func cleanBuildArtifacts(excludePattern: OptionalConfigValue<String?> = .
2789
2826
  public func cleanCocoapodsCache(name: OptionalConfigValue<String?> = .fastlaneDefault(nil)) {
2790
2827
  let nameArg = name.asRubyArgument(name: "name", type: nil)
2791
2828
  let args = [nameArg]
2829
+ .filter { $0?.value != nil }
2792
2830
  .compactMap { $0 }
2793
2831
  let command = RubyCommand(commandID: "", methodName: "clean_cocoapods_cache", className: nil, args: args)
2794
2832
  _ = runner.executeCommand(command)
@@ -2804,6 +2842,7 @@ public func cleanCocoapodsCache(name: OptionalConfigValue<String?> = .fastlaneDe
2804
2842
  public func clearDerivedData(derivedDataPath: String = "~/Library/Developer/Xcode/DerivedData") {
2805
2843
  let derivedDataPathArg = RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath, type: nil)
2806
2844
  let args = [derivedDataPathArg]
2845
+ .filter { $0?.value != nil }
2807
2846
  .compactMap { $0 }
2808
2847
  let command = RubyCommand(commandID: "", methodName: "clear_derived_data", className: nil, args: args)
2809
2848
  _ = runner.executeCommand(command)
@@ -2817,6 +2856,7 @@ public func clearDerivedData(derivedDataPath: String = "~/Library/Developer/Xcod
2817
2856
  public func clipboard(value: String) {
2818
2857
  let valueArg = RubyCommand.Argument(name: "value", value: value, type: nil)
2819
2858
  let args = [valueArg]
2859
+ .filter { $0?.value != nil }
2820
2860
  .compactMap { $0 }
2821
2861
  let command = RubyCommand(commandID: "", methodName: "clipboard", className: nil, args: args)
2822
2862
  _ = runner.executeCommand(command)
@@ -2851,6 +2891,7 @@ public func cloc(binaryPath: String = "/usr/local/bin/cloc",
2851
2891
  outputDirectoryArg,
2852
2892
  sourceDirectoryArg,
2853
2893
  xmlArg]
2894
+ .filter { $0?.value != nil }
2854
2895
  .compactMap { $0 }
2855
2896
  let command = RubyCommand(commandID: "", methodName: "cloc", className: nil, args: args)
2856
2897
  _ = runner.executeCommand(command)
@@ -2925,6 +2966,7 @@ public func cocoapods(repoUpdate: Bool = false,
2925
2966
  allowRootArg,
2926
2967
  cleanArg,
2927
2968
  integrateArg]
2969
+ .filter { $0?.value != nil }
2928
2970
  .compactMap { $0 }
2929
2971
  let command = RubyCommand(commandID: "", methodName: "cocoapods", className: nil, args: args)
2930
2972
  _ = runner.executeCommand(command)
@@ -2975,6 +3017,7 @@ public func cocoapods(repoUpdate: Bool = false,
2975
3017
  pathArg,
2976
3018
  messageArg,
2977
3019
  secureArg]
3020
+ .filter { $0?.value != nil }
2978
3021
  .compactMap { $0 }
2979
3022
  let command = RubyCommand(commandID: "", methodName: "commit_github_file", className: nil, args: args)
2980
3023
  return parseDictionary(fromString: runner.executeCommand(command))
@@ -3006,7 +3049,7 @@ public func commitVersionBump(message: OptionalConfigValue<String?> = .fastlaneD
3006
3049
  xcodeproj: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3007
3050
  force: Bool = false,
3008
3051
  settings: Bool = false,
3009
- ignore: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
3052
+ ignore: Any? = nil,
3010
3053
  include: [String] = [],
3011
3054
  noVerify: Bool = false)
3012
3055
  {
@@ -3014,7 +3057,7 @@ public func commitVersionBump(message: OptionalConfigValue<String?> = .fastlaneD
3014
3057
  let xcodeprojArg = xcodeproj.asRubyArgument(name: "xcodeproj", type: nil)
3015
3058
  let forceArg = RubyCommand.Argument(name: "force", value: force, type: nil)
3016
3059
  let settingsArg = RubyCommand.Argument(name: "settings", value: settings, type: nil)
3017
- let ignoreArg = ignore.asRubyArgument(name: "ignore", type: nil)
3060
+ let ignoreArg = RubyCommand.Argument(name: "ignore", value: ignore, type: nil)
3018
3061
  let includeArg = RubyCommand.Argument(name: "include", value: include, type: nil)
3019
3062
  let noVerifyArg = RubyCommand.Argument(name: "no_verify", value: noVerify, type: nil)
3020
3063
  let args = [messageArg,
@@ -3024,6 +3067,7 @@ public func commitVersionBump(message: OptionalConfigValue<String?> = .fastlaneD
3024
3067
  ignoreArg,
3025
3068
  includeArg,
3026
3069
  noVerifyArg]
3070
+ .filter { $0?.value != nil }
3027
3071
  .compactMap { $0 }
3028
3072
  let command = RubyCommand(commandID: "", methodName: "commit_version_bump", className: nil, args: args)
3029
3073
  _ = runner.executeCommand(command)
@@ -3054,6 +3098,7 @@ public func copyArtifacts(keepOriginal: Bool = true,
3054
3098
  targetPathArg,
3055
3099
  artifactsArg,
3056
3100
  failOnMissingArg]
3101
+ .filter { $0?.value != nil }
3057
3102
  .compactMap { $0 }
3058
3103
  let command = RubyCommand(commandID: "", methodName: "copy_artifacts", className: nil, args: args)
3059
3104
  _ = runner.executeCommand(command)
@@ -3086,8 +3131,8 @@ public func crashlytics(ipaPath: OptionalConfigValue<String?> = .fastlaneDefault
3086
3131
  buildSecret: String,
3087
3132
  notesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3088
3133
  notes: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3089
- groups: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
3090
- emails: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
3134
+ groups: Any? = nil,
3135
+ emails: Any? = nil,
3091
3136
  notifications: Bool = true,
3092
3137
  debug: Bool = false)
3093
3138
  {
@@ -3098,8 +3143,8 @@ public func crashlytics(ipaPath: OptionalConfigValue<String?> = .fastlaneDefault
3098
3143
  let buildSecretArg = RubyCommand.Argument(name: "build_secret", value: buildSecret, type: nil)
3099
3144
  let notesPathArg = notesPath.asRubyArgument(name: "notes_path", type: nil)
3100
3145
  let notesArg = notes.asRubyArgument(name: "notes", type: nil)
3101
- let groupsArg = groups.asRubyArgument(name: "groups", type: nil)
3102
- let emailsArg = emails.asRubyArgument(name: "emails", type: nil)
3146
+ let groupsArg = RubyCommand.Argument(name: "groups", value: groups, type: nil)
3147
+ let emailsArg = RubyCommand.Argument(name: "emails", value: emails, type: nil)
3103
3148
  let notificationsArg = RubyCommand.Argument(name: "notifications", value: notifications, type: nil)
3104
3149
  let debugArg = RubyCommand.Argument(name: "debug", value: debug, type: nil)
3105
3150
  let args = [ipaPathArg,
@@ -3113,6 +3158,7 @@ public func crashlytics(ipaPath: OptionalConfigValue<String?> = .fastlaneDefault
3113
3158
  emailsArg,
3114
3159
  notificationsArg,
3115
3160
  debugArg]
3161
+ .filter { $0?.value != nil }
3116
3162
  .compactMap { $0 }
3117
3163
  let command = RubyCommand(commandID: "", methodName: "crashlytics", className: nil, args: args)
3118
3164
  _ = runner.executeCommand(command)
@@ -3158,6 +3204,7 @@ public func createAppOnManagedPlayStore(jsonKey: OptionalConfigValue<String?> =
3158
3204
  languageArg,
3159
3205
  rootUrlArg,
3160
3206
  timeoutArg]
3207
+ .filter { $0?.value != nil }
3161
3208
  .compactMap { $0 }
3162
3209
  let command = RubyCommand(commandID: "", methodName: "create_app_on_managed_play_store", className: nil, args: args)
3163
3210
  _ = runner.executeCommand(command)
@@ -3208,7 +3255,7 @@ public func createAppOnline(username: String,
3208
3255
  skipDevcenter: Bool = false,
3209
3256
  teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3210
3257
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3211
- itcTeamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
3258
+ itcTeamId: Any? = nil,
3212
3259
  itcTeamName: OptionalConfigValue<String?> = .fastlaneDefault(nil))
3213
3260
  {
3214
3261
  let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
@@ -3228,7 +3275,7 @@ public func createAppOnline(username: String,
3228
3275
  let skipDevcenterArg = RubyCommand.Argument(name: "skip_devcenter", value: skipDevcenter, type: nil)
3229
3276
  let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
3230
3277
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
3231
- let itcTeamIdArg = itcTeamId.asRubyArgument(name: "itc_team_id", type: nil)
3278
+ let itcTeamIdArg = RubyCommand.Argument(name: "itc_team_id", value: itcTeamId, type: nil)
3232
3279
  let itcTeamNameArg = itcTeamName.asRubyArgument(name: "itc_team_name", type: nil)
3233
3280
  let args = [usernameArg,
3234
3281
  appIdentifierArg,
@@ -3249,6 +3296,7 @@ public func createAppOnline(username: String,
3249
3296
  teamNameArg,
3250
3297
  itcTeamIdArg,
3251
3298
  itcTeamNameArg]
3299
+ .filter { $0?.value != nil }
3252
3300
  .compactMap { $0 }
3253
3301
  let command = RubyCommand(commandID: "", methodName: "create_app_online", className: nil, args: args)
3254
3302
  _ = runner.executeCommand(command)
@@ -3300,6 +3348,7 @@ public func createKeychain(name: OptionalConfigValue<String?> = .fastlaneDefault
3300
3348
  lockAfterTimeoutArg,
3301
3349
  addToSearchListArg,
3302
3350
  requireCreateArg]
3351
+ .filter { $0?.value != nil }
3303
3352
  .compactMap { $0 }
3304
3353
  let command = RubyCommand(commandID: "", methodName: "create_keychain", className: nil, args: args)
3305
3354
  _ = runner.executeCommand(command)
@@ -3369,6 +3418,7 @@ public func createPullRequest(apiToken: OptionalConfigValue<String?> = .fastlane
3369
3418
  assigneesArg,
3370
3419
  reviewersArg,
3371
3420
  teamReviewersArg]
3421
+ .filter { $0?.value != nil }
3372
3422
  .compactMap { $0 }
3373
3423
  let command = RubyCommand(commandID: "", methodName: "create_pull_request", className: nil, args: args)
3374
3424
  _ = runner.executeCommand(command)
@@ -3411,6 +3461,7 @@ public func createXcframework(frameworks: OptionalConfigValue<[String]?> = .fast
3411
3461
  librariesArg,
3412
3462
  outputArg,
3413
3463
  allowInternalDistributionArg]
3464
+ .filter { $0?.value != nil }
3414
3465
  .compactMap { $0 }
3415
3466
  let command = RubyCommand(commandID: "", methodName: "create_xcframework", className: nil, args: args)
3416
3467
  _ = runner.executeCommand(command)
@@ -3473,6 +3524,7 @@ public func danger(useBundleExec: Bool = true,
3473
3524
  headArg,
3474
3525
  prArg,
3475
3526
  failIfNoPrArg]
3527
+ .filter { $0?.value != nil }
3476
3528
  .compactMap { $0 }
3477
3529
  let command = RubyCommand(commandID: "", methodName: "danger", className: nil, args: args)
3478
3530
  _ = runner.executeCommand(command)
@@ -3512,6 +3564,7 @@ public func deleteKeychain(name: OptionalConfigValue<String?> = .fastlaneDefault
3512
3564
  let keychainPathArg = keychainPath.asRubyArgument(name: "keychain_path", type: nil)
3513
3565
  let args = [nameArg,
3514
3566
  keychainPathArg]
3567
+ .filter { $0?.value != nil }
3515
3568
  .compactMap { $0 }
3516
3569
  let command = RubyCommand(commandID: "", methodName: "delete_keychain", className: nil, args: args)
3517
3570
  _ = runner.executeCommand(command)
@@ -3566,7 +3619,7 @@ public func deleteKeychain(name: OptionalConfigValue<String?> = .fastlaneDefault
3566
3619
  - primarySecondSubCategory: Metadata: The english name of the primary second sub category (e.g. `Educational`, `Puzzle`)
3567
3620
  - secondaryFirstSubCategory: Metadata: The english name of the secondary first sub category (e.g. `Educational`, `Puzzle`)
3568
3621
  - secondarySecondSubCategory: Metadata: The english name of the secondary second sub category (e.g. `Educational`, `Puzzle`)
3569
- - tradeRepresentativeContactInformation: Metadata: A hash containing the trade representative contact information
3622
+ - tradeRepresentativeContactInformation: **DEPRECATED!** This is no longer used by App Store Connect - Metadata: A hash containing the trade representative contact information
3570
3623
  - appReviewInformation: Metadata: A hash containing the review information
3571
3624
  - appReviewAttachmentFile: Metadata: Path to the app review attachment file
3572
3625
  - description: Metadata: The localised app description
@@ -3616,10 +3669,10 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
3616
3669
  autoReleaseDate: OptionalConfigValue<Int?> = .fastlaneDefault(deliverfile.autoReleaseDate),
3617
3670
  phasedRelease: Bool = deliverfile.phasedRelease,
3618
3671
  resetRatings: Bool = deliverfile.resetRatings,
3619
- priceTier: OptionalConfigValue<Any?> = .fastlaneDefault(deliverfile.priceTier),
3672
+ priceTier: OptionalConfigValue<Int?> = .fastlaneDefault(deliverfile.priceTier),
3620
3673
  appRatingConfigPath: OptionalConfigValue<String?> = .fastlaneDefault(deliverfile.appRatingConfigPath),
3621
3674
  submissionInformation: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.submissionInformation),
3622
- teamId: OptionalConfigValue<Any?> = .fastlaneDefault(deliverfile.teamId),
3675
+ teamId: OptionalConfigValue<String?> = .fastlaneDefault(deliverfile.teamId),
3623
3676
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(deliverfile.teamName),
3624
3677
  devPortalTeamId: OptionalConfigValue<String?> = .fastlaneDefault(deliverfile.devPortalTeamId),
3625
3678
  devPortalTeamName: OptionalConfigValue<String?> = .fastlaneDefault(deliverfile.devPortalTeamName),
@@ -3639,20 +3692,20 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
3639
3692
  tradeRepresentativeContactInformation: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.tradeRepresentativeContactInformation),
3640
3693
  appReviewInformation: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.appReviewInformation),
3641
3694
  appReviewAttachmentFile: OptionalConfigValue<String?> = .fastlaneDefault(deliverfile.appReviewAttachmentFile),
3642
- description: OptionalConfigValue<Any?> = .fastlaneDefault(deliverfile.description),
3643
- name: OptionalConfigValue<Any?> = .fastlaneDefault(deliverfile.name),
3695
+ description: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.description),
3696
+ name: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.name),
3644
3697
  subtitle: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.subtitle),
3645
3698
  keywords: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.keywords),
3646
3699
  promotionalText: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.promotionalText),
3647
- releaseNotes: OptionalConfigValue<Any?> = .fastlaneDefault(deliverfile.releaseNotes),
3648
- privacyUrl: OptionalConfigValue<Any?> = .fastlaneDefault(deliverfile.privacyUrl),
3649
- appleTvPrivacyPolicy: OptionalConfigValue<Any?> = .fastlaneDefault(deliverfile.appleTvPrivacyPolicy),
3650
- supportUrl: OptionalConfigValue<Any?> = .fastlaneDefault(deliverfile.supportUrl),
3651
- marketingUrl: OptionalConfigValue<Any?> = .fastlaneDefault(deliverfile.marketingUrl),
3700
+ releaseNotes: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.releaseNotes),
3701
+ privacyUrl: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.privacyUrl),
3702
+ appleTvPrivacyPolicy: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.appleTvPrivacyPolicy),
3703
+ supportUrl: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.supportUrl),
3704
+ marketingUrl: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(deliverfile.marketingUrl),
3652
3705
  languages: OptionalConfigValue<[String]?> = .fastlaneDefault(deliverfile.languages),
3653
3706
  ignoreLanguageDirectoryValidation: Bool = deliverfile.ignoreLanguageDirectoryValidation,
3654
3707
  precheckIncludeInAppPurchases: Bool = deliverfile.precheckIncludeInAppPurchases,
3655
- app: Any = deliverfile.app)
3708
+ app: OptionalConfigValue<Int?> = .fastlaneDefault(deliverfile.app))
3656
3709
  {
3657
3710
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
3658
3711
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -3715,7 +3768,7 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
3715
3768
  let languagesArg = languages.asRubyArgument(name: "languages", type: nil)
3716
3769
  let ignoreLanguageDirectoryValidationArg = RubyCommand.Argument(name: "ignore_language_directory_validation", value: ignoreLanguageDirectoryValidation, type: nil)
3717
3770
  let precheckIncludeInAppPurchasesArg = RubyCommand.Argument(name: "precheck_include_in_app_purchases", value: precheckIncludeInAppPurchases, type: nil)
3718
- let appArg = RubyCommand.Argument(name: "app", value: app, type: nil)
3771
+ let appArg = app.asRubyArgument(name: "app", type: nil)
3719
3772
  let args = [apiKeyPathArg,
3720
3773
  apiKeyArg,
3721
3774
  usernameArg,
@@ -3778,6 +3831,7 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
3778
3831
  ignoreLanguageDirectoryValidationArg,
3779
3832
  precheckIncludeInAppPurchasesArg,
3780
3833
  appArg]
3834
+ .filter { $0?.value != nil }
3781
3835
  .compactMap { $0 }
3782
3836
  let command = RubyCommand(commandID: "", methodName: "deliver", className: nil, args: args)
3783
3837
  _ = runner.executeCommand(command)
@@ -3828,6 +3882,7 @@ public func deploygate(apiToken: String,
3828
3882
  releaseNoteArg,
3829
3883
  disableNotifyArg,
3830
3884
  distributionNameArg]
3885
+ .filter { $0?.value != nil }
3831
3886
  .compactMap { $0 }
3832
3887
  let command = RubyCommand(commandID: "", methodName: "deploygate", className: nil, args: args)
3833
3888
  _ = runner.executeCommand(command)
@@ -3843,6 +3898,7 @@ public func deploygate(apiToken: String,
3843
3898
  public func dotgpgEnvironment(dotgpgFile: String) {
3844
3899
  let dotgpgFileArg = RubyCommand.Argument(name: "dotgpg_file", value: dotgpgFile, type: nil)
3845
3900
  let args = [dotgpgFileArg]
3901
+ .filter { $0?.value != nil }
3846
3902
  .compactMap { $0 }
3847
3903
  let command = RubyCommand(commandID: "", methodName: "dotgpg_environment", className: nil, args: args)
3848
3904
  _ = runner.executeCommand(command)
@@ -3860,6 +3916,7 @@ public func dotgpgEnvironment(dotgpgFile: String) {
3860
3916
  public func download(url: String) {
3861
3917
  let urlArg = RubyCommand.Argument(name: "url", value: url, type: nil)
3862
3918
  let args = [urlArg]
3919
+ .filter { $0?.value != nil }
3863
3920
  .compactMap { $0 }
3864
3921
  let command = RubyCommand(commandID: "", methodName: "download", className: nil, args: args)
3865
3922
  _ = runner.executeCommand(command)
@@ -3879,13 +3936,13 @@ public func download(url: String) {
3879
3936
  */
3880
3937
  public func downloadAppPrivacyDetailsFromAppStore(username: String,
3881
3938
  appIdentifier: String,
3882
- teamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
3939
+ teamId: Any? = nil,
3883
3940
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3884
3941
  outputJsonPath: String = "./fastlane/app_privacy_details.json")
3885
3942
  {
3886
3943
  let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
3887
3944
  let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
3888
- let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
3945
+ let teamIdArg = RubyCommand.Argument(name: "team_id", value: teamId, type: nil)
3889
3946
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
3890
3947
  let outputJsonPathArg = RubyCommand.Argument(name: "output_json_path", value: outputJsonPath, type: nil)
3891
3948
  let args = [usernameArg,
@@ -3893,6 +3950,7 @@ public func downloadAppPrivacyDetailsFromAppStore(username: String,
3893
3950
  teamIdArg,
3894
3951
  teamNameArg,
3895
3952
  outputJsonPathArg]
3953
+ .filter { $0?.value != nil }
3896
3954
  .compactMap { $0 }
3897
3955
  let command = RubyCommand(commandID: "", methodName: "download_app_privacy_details_from_app_store", className: nil, args: args)
3898
3956
  _ = runner.executeCommand(command)
@@ -3928,11 +3986,11 @@ public func downloadAppPrivacyDetailsFromAppStore(username: String,
3928
3986
  */
3929
3987
  public func downloadDsyms(username: String,
3930
3988
  appIdentifier: String,
3931
- teamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
3989
+ teamId: Any? = nil,
3932
3990
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3933
3991
  platform: String = "ios",
3934
3992
  version: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3935
- buildNumber: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
3993
+ buildNumber: Any? = nil,
3936
3994
  minVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3937
3995
  afterUploadedDate: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3938
3996
  outputDirectory: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -3941,11 +3999,11 @@ public func downloadDsyms(username: String,
3941
3999
  {
3942
4000
  let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
3943
4001
  let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
3944
- let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
4002
+ let teamIdArg = RubyCommand.Argument(name: "team_id", value: teamId, type: nil)
3945
4003
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
3946
4004
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
3947
4005
  let versionArg = version.asRubyArgument(name: "version", type: nil)
3948
- let buildNumberArg = buildNumber.asRubyArgument(name: "build_number", type: nil)
4006
+ let buildNumberArg = RubyCommand.Argument(name: "build_number", value: buildNumber, type: nil)
3949
4007
  let minVersionArg = minVersion.asRubyArgument(name: "min_version", type: nil)
3950
4008
  let afterUploadedDateArg = afterUploadedDate.asRubyArgument(name: "after_uploaded_date", type: nil)
3951
4009
  let outputDirectoryArg = outputDirectory.asRubyArgument(name: "output_directory", type: nil)
@@ -3963,6 +4021,7 @@ public func downloadDsyms(username: String,
3963
4021
  outputDirectoryArg,
3964
4022
  waitForDsymProcessingArg,
3965
4023
  waitTimeoutArg]
4024
+ .filter { $0?.value != nil }
3966
4025
  .compactMap { $0 }
3967
4026
  let command = RubyCommand(commandID: "", methodName: "download_dsyms", className: nil, args: args)
3968
4027
  _ = runner.executeCommand(command)
@@ -4016,6 +4075,7 @@ public func downloadFromPlayStore(packageName: String,
4016
4075
  jsonKeyDataArg,
4017
4076
  rootUrlArg,
4018
4077
  timeoutArg]
4078
+ .filter { $0?.value != nil }
4019
4079
  .compactMap { $0 }
4020
4080
  let command = RubyCommand(commandID: "", methodName: "download_from_play_store", className: nil, args: args)
4021
4081
  _ = runner.executeCommand(command)
@@ -4041,6 +4101,7 @@ public func dsymZip(archivePath: OptionalConfigValue<String?> = .fastlaneDefault
4041
4101
  let args = [archivePathArg,
4042
4102
  dsymPathArg,
4043
4103
  allArg]
4104
+ .filter { $0?.value != nil }
4044
4105
  .compactMap { $0 }
4045
4106
  let command = RubyCommand(commandID: "", methodName: "dsym_zip", className: nil, args: args)
4046
4107
  _ = runner.executeCommand(command)
@@ -4054,6 +4115,7 @@ public func dsymZip(archivePath: OptionalConfigValue<String?> = .fastlaneDefault
4054
4115
  public func echo(message: OptionalConfigValue<String?> = .fastlaneDefault(nil)) {
4055
4116
  let messageArg = message.asRubyArgument(name: "message", type: nil)
4056
4117
  let args = [messageArg]
4118
+ .filter { $0?.value != nil }
4057
4119
  .compactMap { $0 }
4058
4120
  let command = RubyCommand(commandID: "", methodName: "echo", className: nil, args: args)
4059
4121
  _ = runner.executeCommand(command)
@@ -4081,6 +4143,7 @@ public func ensureBundleExec() {
4081
4143
  public func ensureEnvVars(envVars: [String]) {
4082
4144
  let envVarsArg = RubyCommand.Argument(name: "env_vars", value: envVars, type: nil)
4083
4145
  let args = [envVarsArg]
4146
+ .filter { $0?.value != nil }
4084
4147
  .compactMap { $0 }
4085
4148
  let command = RubyCommand(commandID: "", methodName: "ensure_env_vars", className: nil, args: args)
4086
4149
  _ = runner.executeCommand(command)
@@ -4097,6 +4160,7 @@ public func ensureEnvVars(envVars: [String]) {
4097
4160
  public func ensureGitBranch(branch: String = "master") {
4098
4161
  let branchArg = RubyCommand.Argument(name: "branch", value: branch, type: nil)
4099
4162
  let args = [branchArg]
4163
+ .filter { $0?.value != nil }
4100
4164
  .compactMap { $0 }
4101
4165
  let command = RubyCommand(commandID: "", methodName: "ensure_git_branch", className: nil, args: args)
4102
4166
  _ = runner.executeCommand(command)
@@ -4124,6 +4188,7 @@ public func ensureGitStatusClean(showUncommittedChanges: Bool = false,
4124
4188
  let args = [showUncommittedChangesArg,
4125
4189
  showDiffArg,
4126
4190
  ignoredArg]
4191
+ .filter { $0?.value != nil }
4127
4192
  .compactMap { $0 }
4128
4193
  let command = RubyCommand(commandID: "", methodName: "ensure_git_status_clean", className: nil, args: args)
4129
4194
  _ = runner.executeCommand(command)
@@ -4146,14 +4211,14 @@ public func ensureGitStatusClean(showUncommittedChanges: Bool = false,
4146
4211
  public func ensureNoDebugCode(text: String,
4147
4212
  path: String = ".",
4148
4213
  extension: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4149
- extensions: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
4214
+ extensions: Any? = nil,
4150
4215
  exclude: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4151
4216
  excludeDirs: OptionalConfigValue<[String]?> = .fastlaneDefault(nil))
4152
4217
  {
4153
4218
  let textArg = RubyCommand.Argument(name: "text", value: text, type: nil)
4154
4219
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
4155
4220
  let extensionArg = `extension`.asRubyArgument(name: "extension", type: nil)
4156
- let extensionsArg = extensions.asRubyArgument(name: "extensions", type: nil)
4221
+ let extensionsArg = RubyCommand.Argument(name: "extensions", value: extensions, type: nil)
4157
4222
  let excludeArg = exclude.asRubyArgument(name: "exclude", type: nil)
4158
4223
  let excludeDirsArg = excludeDirs.asRubyArgument(name: "exclude_dirs", type: nil)
4159
4224
  let args = [textArg,
@@ -4162,6 +4227,7 @@ public func ensureNoDebugCode(text: String,
4162
4227
  extensionsArg,
4163
4228
  excludeArg,
4164
4229
  excludeDirsArg]
4230
+ .filter { $0?.value != nil }
4165
4231
  .compactMap { $0 }
4166
4232
  let command = RubyCommand(commandID: "", methodName: "ensure_no_debug_code", className: nil, args: args)
4167
4233
  _ = runner.executeCommand(command)
@@ -4186,6 +4252,7 @@ public func ensureXcodeVersion(version: OptionalConfigValue<String?> = .fastlane
4186
4252
  let strictArg = RubyCommand.Argument(name: "strict", value: strict, type: nil)
4187
4253
  let args = [versionArg,
4188
4254
  strictArg]
4255
+ .filter { $0?.value != nil }
4189
4256
  .compactMap { $0 }
4190
4257
  let command = RubyCommand(commandID: "", methodName: "ensure_xcode_version", className: nil, args: args)
4191
4258
  _ = runner.executeCommand(command)
@@ -4209,6 +4276,7 @@ public func ensureXcodeVersion(version: OptionalConfigValue<String?> = .fastlane
4209
4276
  let args = [setArg,
4210
4277
  getArg,
4211
4278
  removeArg]
4279
+ .filter { $0?.value != nil }
4212
4280
  .compactMap { $0 }
4213
4281
  let command = RubyCommand(commandID: "", methodName: "environment_variable", className: nil, args: args)
4214
4282
  return runner.executeCommand(command)
@@ -4239,6 +4307,7 @@ public func erb(template: String,
4239
4307
  destinationArg,
4240
4308
  placeholdersArg,
4241
4309
  trimModeArg]
4310
+ .filter { $0?.value != nil }
4242
4311
  .compactMap { $0 }
4243
4312
  let command = RubyCommand(commandID: "", methodName: "erb", className: nil, args: args)
4244
4313
  _ = runner.executeCommand(command)
@@ -4276,6 +4345,7 @@ public func flock(message: String,
4276
4345
  let args = [messageArg,
4277
4346
  tokenArg,
4278
4347
  baseUrlArg]
4348
+ .filter { $0?.value != nil }
4279
4349
  .compactMap { $0 }
4280
4350
  let command = RubyCommand(commandID: "", methodName: "flock", className: nil, args: args)
4281
4351
  _ = runner.executeCommand(command)
@@ -4358,6 +4428,7 @@ public func frameScreenshots(white: OptionalConfigValue<Bool?> = .fastlaneDefaul
4358
4428
  resumeArg,
4359
4429
  usePlatformArg,
4360
4430
  pathArg]
4431
+ .filter { $0?.value != nil }
4361
4432
  .compactMap { $0 }
4362
4433
  let command = RubyCommand(commandID: "", methodName: "frame_screenshots", className: nil, args: args)
4363
4434
  _ = runner.executeCommand(command)
@@ -4440,6 +4511,7 @@ public func frameit(white: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
4440
4511
  resumeArg,
4441
4512
  usePlatformArg,
4442
4513
  pathArg]
4514
+ .filter { $0?.value != nil }
4443
4515
  .compactMap { $0 }
4444
4516
  let command = RubyCommand(commandID: "", methodName: "frameit", className: nil, args: args)
4445
4517
  _ = runner.executeCommand(command)
@@ -4473,6 +4545,7 @@ public func gcovr() {
4473
4545
  let hideErrorWhenVersioningDisabledArg = RubyCommand.Argument(name: "hide_error_when_versioning_disabled", value: hideErrorWhenVersioningDisabled, type: nil)
4474
4546
  let args = [xcodeprojArg,
4475
4547
  hideErrorWhenVersioningDisabledArg]
4548
+ .filter { $0?.value != nil }
4476
4549
  .compactMap { $0 }
4477
4550
  let command = RubyCommand(commandID: "", methodName: "get_build_number", className: nil, args: args)
4478
4551
  return runner.executeCommand(command)
@@ -4492,6 +4565,7 @@ public func gcovr() {
4492
4565
  public func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
4493
4566
  let useHgRevisionNumberArg = RubyCommand.Argument(name: "use_hg_revision_number", value: useHgRevisionNumber, type: nil)
4494
4567
  let args = [useHgRevisionNumberArg]
4568
+ .filter { $0?.value != nil }
4495
4569
  .compactMap { $0 }
4496
4570
  let command = RubyCommand(commandID: "", methodName: "get_build_number_repository", className: nil, args: args)
4497
4571
  _ = runner.executeCommand(command)
@@ -4566,6 +4640,7 @@ public func getCertificates(development: Bool = false,
4566
4640
  keychainPasswordArg,
4567
4641
  skipSetPartitionListArg,
4568
4642
  platformArg]
4643
+ .filter { $0?.value != nil }
4569
4644
  .compactMap { $0 }
4570
4645
  let command = RubyCommand(commandID: "", methodName: "get_certificates", className: nil, args: args)
4571
4646
  _ = runner.executeCommand(command)
@@ -4640,6 +4715,7 @@ public func getGithubRelease(url: String,
4640
4715
  versionArg,
4641
4716
  apiTokenArg,
4642
4717
  apiBearerArg]
4718
+ .filter { $0?.value != nil }
4643
4719
  .compactMap { $0 }
4644
4720
  let command = RubyCommand(commandID: "", methodName: "get_github_release", className: nil, args: args)
4645
4721
  _ = runner.executeCommand(command)
@@ -4661,6 +4737,7 @@ public func getGithubRelease(url: String,
4661
4737
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
4662
4738
  let args = [keyArg,
4663
4739
  pathArg]
4740
+ .filter { $0?.value != nil }
4664
4741
  .compactMap { $0 }
4665
4742
  let command = RubyCommand(commandID: "", methodName: "get_info_plist_value", className: nil, args: args)
4666
4743
  return runner.executeCommand(command)
@@ -4684,6 +4761,7 @@ public func getGithubRelease(url: String,
4684
4761
  let ipaArg = RubyCommand.Argument(name: "ipa", value: ipa, type: nil)
4685
4762
  let args = [keyArg,
4686
4763
  ipaArg]
4764
+ .filter { $0?.value != nil }
4687
4765
  .compactMap { $0 }
4688
4766
  let command = RubyCommand(commandID: "", methodName: "get_ipa_info_plist_value", className: nil, args: args)
4689
4767
  return runner.executeCommand(command)
@@ -4710,6 +4788,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
4710
4788
  let jsonKeyDataArg = jsonKeyData.asRubyArgument(name: "json_key_data", type: nil)
4711
4789
  let args = [jsonKeyArg,
4712
4790
  jsonKeyDataArg]
4791
+ .filter { $0?.value != nil }
4713
4792
  .compactMap { $0 }
4714
4793
  let command = RubyCommand(commandID: "", methodName: "get_managed_play_store_publishing_rights", className: nil, args: args)
4715
4794
  _ = runner.executeCommand(command)
@@ -4817,6 +4896,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
4817
4896
  readonlyArg,
4818
4897
  templateNameArg,
4819
4898
  failOnNameTakenArg]
4899
+ .filter { $0?.value != nil }
4820
4900
  .compactMap { $0 }
4821
4901
  let command = RubyCommand(commandID: "", methodName: "get_provisioning_profile", className: nil, args: args)
4822
4902
  return runner.executeCommand(command)
@@ -4866,7 +4946,7 @@ public func getPushCertificate(development: Bool = false,
4866
4946
  p12Password: String,
4867
4947
  pemName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4868
4948
  outputPath: String = ".",
4869
- newProfile: OptionalConfigValue<Any?> = .fastlaneDefault(nil))
4949
+ newProfile: Any? = nil)
4870
4950
  {
4871
4951
  let developmentArg = RubyCommand.Argument(name: "development", value: development, type: nil)
4872
4952
  let websitePushArg = RubyCommand.Argument(name: "website_push", value: websitePush, type: nil)
@@ -4881,7 +4961,7 @@ public func getPushCertificate(development: Bool = false,
4881
4961
  let p12PasswordArg = RubyCommand.Argument(name: "p12_password", value: p12Password, type: nil)
4882
4962
  let pemNameArg = pemName.asRubyArgument(name: "pem_name", type: nil)
4883
4963
  let outputPathArg = RubyCommand.Argument(name: "output_path", value: outputPath, type: nil)
4884
- let newProfileArg = newProfile.asRubyArgument(name: "new_profile", type: nil)
4964
+ let newProfileArg = RubyCommand.Argument(name: "new_profile", value: newProfile, type: nil)
4885
4965
  let args = [developmentArg,
4886
4966
  websitePushArg,
4887
4967
  generateP12Arg,
@@ -4896,6 +4976,7 @@ public func getPushCertificate(development: Bool = false,
4896
4976
  pemNameArg,
4897
4977
  outputPathArg,
4898
4978
  newProfileArg]
4979
+ .filter { $0?.value != nil }
4899
4980
  .compactMap { $0 }
4900
4981
  let command = RubyCommand(commandID: "", methodName: "get_push_certificate", className: nil, args: args)
4901
4982
  _ = runner.executeCommand(command)
@@ -4921,6 +5002,7 @@ public func getPushCertificate(development: Bool = false,
4921
5002
  let args = [xcodeprojArg,
4922
5003
  targetArg,
4923
5004
  configurationArg]
5005
+ .filter { $0?.value != nil }
4924
5006
  .compactMap { $0 }
4925
5007
  let command = RubyCommand(commandID: "", methodName: "get_version_number", className: nil, args: args)
4926
5008
  return runner.executeCommand(command)
@@ -4934,16 +5016,17 @@ public func getPushCertificate(development: Bool = false,
4934
5016
  - shellEscape: Shell escapes paths (set to false if using wildcards or manually escaping spaces in :path)
4935
5017
  - pathspec: **DEPRECATED!** Use `--path` instead - The pathspec you want to add files from
4936
5018
  */
4937
- public func gitAdd(path: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
5019
+ public func gitAdd(path: Any? = nil,
4938
5020
  shellEscape: Bool = true,
4939
5021
  pathspec: OptionalConfigValue<String?> = .fastlaneDefault(nil))
4940
5022
  {
4941
- let pathArg = path.asRubyArgument(name: "path", type: nil)
5023
+ let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
4942
5024
  let shellEscapeArg = RubyCommand.Argument(name: "shell_escape", value: shellEscape, type: nil)
4943
5025
  let pathspecArg = pathspec.asRubyArgument(name: "pathspec", type: nil)
4944
5026
  let args = [pathArg,
4945
5027
  shellEscapeArg,
4946
5028
  pathspecArg]
5029
+ .filter { $0?.value != nil }
4947
5030
  .compactMap { $0 }
4948
5031
  let command = RubyCommand(commandID: "", methodName: "git_add", className: nil, args: args)
4949
5032
  _ = runner.executeCommand(command)
@@ -4982,6 +5065,7 @@ public func gitCommit(path: Any,
4982
5065
  messageArg,
4983
5066
  skipGitHooksArg,
4984
5067
  allowNothingToCommitArg]
5068
+ .filter { $0?.value != nil }
4985
5069
  .compactMap { $0 }
4986
5070
  let command = RubyCommand(commandID: "", methodName: "git_commit", className: nil, args: args)
4987
5071
  _ = runner.executeCommand(command)
@@ -5001,6 +5085,7 @@ public func gitPull(onlyTags: Bool = false,
5001
5085
  let rebaseArg = RubyCommand.Argument(name: "rebase", value: rebase, type: nil)
5002
5086
  let args = [onlyTagsArg,
5003
5087
  rebaseArg]
5088
+ .filter { $0?.value != nil }
5004
5089
  .compactMap { $0 }
5005
5090
  let command = RubyCommand(commandID: "", methodName: "git_pull", className: nil, args: args)
5006
5091
  _ = runner.executeCommand(command)
@@ -5020,6 +5105,7 @@ public func gitSubmoduleUpdate(recursive: Bool = false,
5020
5105
  let initArg = RubyCommand.Argument(name: "init", value: `init`, type: nil)
5021
5106
  let args = [recursiveArg,
5022
5107
  initArg]
5108
+ .filter { $0?.value != nil }
5023
5109
  .compactMap { $0 }
5024
5110
  let command = RubyCommand(commandID: "", methodName: "git_submodule_update", className: nil, args: args)
5025
5111
  _ = runner.executeCommand(command)
@@ -5045,6 +5131,7 @@ public func gitSubmoduleUpdate(recursive: Bool = false,
5045
5131
  let args = [tagArg,
5046
5132
  remoteArg,
5047
5133
  remoteNameArg]
5134
+ .filter { $0?.value != nil }
5048
5135
  .compactMap { $0 }
5049
5136
  let command = RubyCommand(commandID: "", methodName: "git_tag_exists", className: nil, args: args)
5050
5137
  return parseBool(fromString: runner.executeCommand(command))
@@ -5106,6 +5193,7 @@ public func githubApi(serverUrl: String = "https://api.github.com",
5106
5193
  errorHandlersArg,
5107
5194
  headersArg,
5108
5195
  secureArg]
5196
+ .filter { $0?.value != nil }
5109
5197
  .compactMap { $0 }
5110
5198
  let command = RubyCommand(commandID: "", methodName: "github_api", className: nil, args: args)
5111
5199
  _ = runner.executeCommand(command)
@@ -5153,6 +5241,7 @@ public func googlePlayTrackReleaseNames(packageName: String,
5153
5241
  jsonKeyDataArg,
5154
5242
  rootUrlArg,
5155
5243
  timeoutArg]
5244
+ .filter { $0?.value != nil }
5156
5245
  .compactMap { $0 }
5157
5246
  let command = RubyCommand(commandID: "", methodName: "google_play_track_release_names", className: nil, args: args)
5158
5247
  _ = runner.executeCommand(command)
@@ -5200,6 +5289,7 @@ public func googlePlayTrackVersionCodes(packageName: String,
5200
5289
  jsonKeyDataArg,
5201
5290
  rootUrlArg,
5202
5291
  timeoutArg]
5292
+ .filter { $0?.value != nil }
5203
5293
  .compactMap { $0 }
5204
5294
  let command = RubyCommand(commandID: "", methodName: "google_play_track_version_codes", className: nil, args: args)
5205
5295
  _ = runner.executeCommand(command)
@@ -5233,8 +5323,8 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5233
5323
  flags: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5234
5324
  projectDir: String = ".",
5235
5325
  gradlePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5236
- properties: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
5237
- systemProperties: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
5326
+ properties: Any? = nil,
5327
+ systemProperties: Any? = nil,
5238
5328
  serial: String = "",
5239
5329
  printCommand: Bool = true,
5240
5330
  printCommandOutput: Bool = true)
@@ -5246,8 +5336,8 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5246
5336
  let flagsArg = flags.asRubyArgument(name: "flags", type: nil)
5247
5337
  let projectDirArg = RubyCommand.Argument(name: "project_dir", value: projectDir, type: nil)
5248
5338
  let gradlePathArg = gradlePath.asRubyArgument(name: "gradle_path", type: nil)
5249
- let propertiesArg = properties.asRubyArgument(name: "properties", type: nil)
5250
- let systemPropertiesArg = systemProperties.asRubyArgument(name: "system_properties", type: nil)
5339
+ let propertiesArg = RubyCommand.Argument(name: "properties", value: properties, type: nil)
5340
+ let systemPropertiesArg = RubyCommand.Argument(name: "system_properties", value: systemProperties, type: nil)
5251
5341
  let serialArg = RubyCommand.Argument(name: "serial", value: serial, type: nil)
5252
5342
  let printCommandArg = RubyCommand.Argument(name: "print_command", value: printCommand, type: nil)
5253
5343
  let printCommandOutputArg = RubyCommand.Argument(name: "print_command_output", value: printCommandOutput, type: nil)
@@ -5263,6 +5353,7 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5263
5353
  serialArg,
5264
5354
  printCommandArg,
5265
5355
  printCommandOutputArg]
5356
+ .filter { $0?.value != nil }
5266
5357
  .compactMap { $0 }
5267
5358
  let command = RubyCommand(commandID: "", methodName: "gradle", className: nil, args: args)
5268
5359
  _ = runner.executeCommand(command)
@@ -5466,6 +5557,7 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5466
5557
  skipPackageDependenciesResolutionArg,
5467
5558
  disablePackageAutomaticUpdatesArg,
5468
5559
  useSystemScmArg]
5560
+ .filter { $0?.value != nil }
5469
5561
  .compactMap { $0 }
5470
5562
  let command = RubyCommand(commandID: "", methodName: "gym", className: nil, args: args)
5471
5563
  return runner.executeCommand(command)
@@ -5479,6 +5571,7 @@ public func gradle(task: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5479
5571
  public func hgAddTag(tag: String) {
5480
5572
  let tagArg = RubyCommand.Argument(name: "tag", value: tag, type: nil)
5481
5573
  let args = [tagArg]
5574
+ .filter { $0?.value != nil }
5482
5575
  .compactMap { $0 }
5483
5576
  let command = RubyCommand(commandID: "", methodName: "hg_add_tag", className: nil, args: args)
5484
5577
  _ = runner.executeCommand(command)
@@ -5520,6 +5613,7 @@ public func hgCommitVersionBump(message: String = "Version Bump",
5520
5613
  forceArg,
5521
5614
  testDirtyFilesArg,
5522
5615
  testExpectedFilesArg]
5616
+ .filter { $0?.value != nil }
5523
5617
  .compactMap { $0 }
5524
5618
  let command = RubyCommand(commandID: "", methodName: "hg_commit_version_bump", className: nil, args: args)
5525
5619
  _ = runner.executeCommand(command)
@@ -5552,6 +5646,7 @@ public func hgPush(force: Bool = false,
5552
5646
  let destinationArg = RubyCommand.Argument(name: "destination", value: destination, type: nil)
5553
5647
  let args = [forceArg,
5554
5648
  destinationArg]
5649
+ .filter { $0?.value != nil }
5555
5650
  .compactMap { $0 }
5556
5651
  let command = RubyCommand(commandID: "", methodName: "hg_push", className: nil, args: args)
5557
5652
  _ = runner.executeCommand(command)
@@ -5609,6 +5704,7 @@ public func hipchat(message: String = "",
5609
5704
  messageFormatArg,
5610
5705
  includeHtmlHeaderArg,
5611
5706
  fromArg]
5707
+ .filter { $0?.value != nil }
5612
5708
  .compactMap { $0 }
5613
5709
  let command = RubyCommand(commandID: "", methodName: "hipchat", className: nil, args: args)
5614
5710
  _ = runner.executeCommand(command)
@@ -5734,6 +5830,7 @@ public func hockey(apk: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5734
5830
  timeoutArg,
5735
5831
  bypassCdnArg,
5736
5832
  dsaSignatureArg]
5833
+ .filter { $0?.value != nil }
5737
5834
  .compactMap { $0 }
5738
5835
  let command = RubyCommand(commandID: "", methodName: "hockey", className: nil, args: args)
5739
5836
  _ = runner.executeCommand(command)
@@ -5767,6 +5864,7 @@ public func ifttt(apiKey: String,
5767
5864
  value1Arg,
5768
5865
  value2Arg,
5769
5866
  value3Arg]
5867
+ .filter { $0?.value != nil }
5770
5868
  .compactMap { $0 }
5771
5869
  let command = RubyCommand(commandID: "", methodName: "ifttt", className: nil, args: args)
5772
5870
  _ = runner.executeCommand(command)
@@ -5804,6 +5902,7 @@ public func importCertificate(certificatePath: String,
5804
5902
  keychainPathArg,
5805
5903
  keychainPasswordArg,
5806
5904
  logOutputArg]
5905
+ .filter { $0?.value != nil }
5807
5906
  .compactMap { $0 }
5808
5907
  let command = RubyCommand(commandID: "", methodName: "import_certificate", className: nil, args: args)
5809
5908
  _ = runner.executeCommand(command)
@@ -5819,16 +5918,17 @@ public func importCertificate(certificatePath: String,
5819
5918
 
5820
5919
  - returns: The new build number
5821
5920
  */
5822
- @discardableResult public func incrementBuildNumber(buildNumber: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
5921
+ @discardableResult public func incrementBuildNumber(buildNumber: Any? = nil,
5823
5922
  skipInfoPlist: Bool = false,
5824
5923
  xcodeproj: OptionalConfigValue<String?> = .fastlaneDefault(nil)) -> String
5825
5924
  {
5826
- let buildNumberArg = buildNumber.asRubyArgument(name: "build_number", type: nil)
5925
+ let buildNumberArg = RubyCommand.Argument(name: "build_number", value: buildNumber, type: nil)
5827
5926
  let skipInfoPlistArg = RubyCommand.Argument(name: "skip_info_plist", value: skipInfoPlist, type: nil)
5828
5927
  let xcodeprojArg = xcodeproj.asRubyArgument(name: "xcodeproj", type: nil)
5829
5928
  let args = [buildNumberArg,
5830
5929
  skipInfoPlistArg,
5831
5930
  xcodeprojArg]
5931
+ .filter { $0?.value != nil }
5832
5932
  .compactMap { $0 }
5833
5933
  let command = RubyCommand(commandID: "", methodName: "increment_build_number", className: nil, args: args)
5834
5934
  return runner.executeCommand(command)
@@ -5857,6 +5957,7 @@ public func importCertificate(certificatePath: String,
5857
5957
  let args = [bumpTypeArg,
5858
5958
  versionNumberArg,
5859
5959
  xcodeprojArg]
5960
+ .filter { $0?.value != nil }
5860
5961
  .compactMap { $0 }
5861
5962
  let command = RubyCommand(commandID: "", methodName: "increment_version_number", className: nil, args: args)
5862
5963
  return runner.executeCommand(command)
@@ -5875,17 +5976,18 @@ public func importCertificate(certificatePath: String,
5875
5976
  */
5876
5977
  public func installOnDevice(extra: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5877
5978
  deviceId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5878
- skipWifi: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
5979
+ skipWifi: Any? = nil,
5879
5980
  ipa: OptionalConfigValue<String?> = .fastlaneDefault(nil))
5880
5981
  {
5881
5982
  let extraArg = extra.asRubyArgument(name: "extra", type: nil)
5882
5983
  let deviceIdArg = deviceId.asRubyArgument(name: "device_id", type: nil)
5883
- let skipWifiArg = skipWifi.asRubyArgument(name: "skip_wifi", type: nil)
5984
+ let skipWifiArg = RubyCommand.Argument(name: "skip_wifi", value: skipWifi, type: nil)
5884
5985
  let ipaArg = ipa.asRubyArgument(name: "ipa", type: nil)
5885
5986
  let args = [extraArg,
5886
5987
  deviceIdArg,
5887
5988
  skipWifiArg,
5888
5989
  ipaArg]
5990
+ .filter { $0?.value != nil }
5889
5991
  .compactMap { $0 }
5890
5992
  let command = RubyCommand(commandID: "", methodName: "install_on_device", className: nil, args: args)
5891
5993
  _ = runner.executeCommand(command)
@@ -5903,6 +6005,7 @@ public func installOnDevice(extra: OptionalConfigValue<String?> = .fastlaneDefau
5903
6005
  @discardableResult public func installProvisioningProfile(path: String) -> String {
5904
6006
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
5905
6007
  let args = [pathArg]
6008
+ .filter { $0?.value != nil }
5906
6009
  .compactMap { $0 }
5907
6010
  let command = RubyCommand(commandID: "", methodName: "install_provisioning_profile", className: nil, args: args)
5908
6011
  return runner.executeCommand(command)
@@ -5922,6 +6025,7 @@ public func installXcodePlugin(url: String,
5922
6025
  let githubArg = github.asRubyArgument(name: "github", type: nil)
5923
6026
  let args = [urlArg,
5924
6027
  githubArg]
6028
+ .filter { $0?.value != nil }
5925
6029
  .compactMap { $0 }
5926
6030
  let command = RubyCommand(commandID: "", methodName: "install_xcode_plugin", className: nil, args: args)
5927
6031
  _ = runner.executeCommand(command)
@@ -5953,6 +6057,7 @@ public func installr(apiToken: String,
5953
6057
  notesArg,
5954
6058
  notifyArg,
5955
6059
  addArg]
6060
+ .filter { $0?.value != nil }
5956
6061
  .compactMap { $0 }
5957
6062
  let command = RubyCommand(commandID: "", methodName: "installr", className: nil, args: args)
5958
6063
  _ = runner.executeCommand(command)
@@ -5980,8 +6085,8 @@ public func ipa(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5980
6085
  project: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5981
6086
  configuration: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5982
6087
  scheme: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5983
- clean: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
5984
- archive: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
6088
+ clean: Any? = nil,
6089
+ archive: Any? = nil,
5985
6090
  destination: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5986
6091
  embed: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5987
6092
  identity: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -5994,8 +6099,8 @@ public func ipa(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil),
5994
6099
  let projectArg = project.asRubyArgument(name: "project", type: nil)
5995
6100
  let configurationArg = configuration.asRubyArgument(name: "configuration", type: nil)
5996
6101
  let schemeArg = scheme.asRubyArgument(name: "scheme", type: nil)
5997
- let cleanArg = clean.asRubyArgument(name: "clean", type: nil)
5998
- let archiveArg = archive.asRubyArgument(name: "archive", type: nil)
6102
+ let cleanArg = RubyCommand.Argument(name: "clean", value: clean, type: nil)
6103
+ let archiveArg = RubyCommand.Argument(name: "archive", value: archive, type: nil)
5999
6104
  let destinationArg = destination.asRubyArgument(name: "destination", type: nil)
6000
6105
  let embedArg = embed.asRubyArgument(name: "embed", type: nil)
6001
6106
  let identityArg = identity.asRubyArgument(name: "identity", type: nil)
@@ -6016,6 +6121,7 @@ public func ipa(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6016
6121
  ipaArg,
6017
6122
  xcconfigArg,
6018
6123
  xcargsArg]
6124
+ .filter { $0?.value != nil }
6019
6125
  .compactMap { $0 }
6020
6126
  let command = RubyCommand(commandID: "", methodName: "ipa", className: nil, args: args)
6021
6127
  _ = runner.executeCommand(command)
@@ -6046,6 +6152,7 @@ public func jazzy(config: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6046
6152
  let moduleVersionArg = moduleVersion.asRubyArgument(name: "module_version", type: nil)
6047
6153
  let args = [configArg,
6048
6154
  moduleVersionArg]
6155
+ .filter { $0?.value != nil }
6049
6156
  .compactMap { $0 }
6050
6157
  let command = RubyCommand(commandID: "", methodName: "jazzy", className: nil, args: args)
6051
6158
  _ = runner.executeCommand(command)
@@ -6088,6 +6195,7 @@ public func jazzy(config: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6088
6195
  ticketIdArg,
6089
6196
  commentTextArg,
6090
6197
  failOnErrorArg]
6198
+ .filter { $0?.value != nil }
6091
6199
  .compactMap { $0 }
6092
6200
  let command = RubyCommand(commandID: "", methodName: "jira", className: nil, args: args)
6093
6201
  return parseDictionary(fromString: runner.executeCommand(command))
@@ -6127,6 +6235,7 @@ public func jazzy(config: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6127
6235
  @discardableResult public func lastGitTag(pattern: OptionalConfigValue<String?> = .fastlaneDefault(nil)) -> String {
6128
6236
  let patternArg = pattern.asRubyArgument(name: "pattern", type: nil)
6129
6237
  let args = [patternArg]
6238
+ .filter { $0?.value != nil }
6130
6239
  .compactMap { $0 }
6131
6240
  let command = RubyCommand(commandID: "", methodName: "last_git_tag", className: nil, args: args)
6132
6241
  return runner.executeCommand(command)
@@ -6160,7 +6269,7 @@ public func jazzy(config: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6160
6269
  version: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6161
6270
  platform: String = "ios",
6162
6271
  initialBuildNumber: Int = 1,
6163
- teamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
6272
+ teamId: Any? = nil,
6164
6273
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil)) -> Int
6165
6274
  {
6166
6275
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
@@ -6171,7 +6280,7 @@ public func jazzy(config: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6171
6280
  let versionArg = version.asRubyArgument(name: "version", type: nil)
6172
6281
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
6173
6282
  let initialBuildNumberArg = RubyCommand.Argument(name: "initial_build_number", value: initialBuildNumber, type: nil)
6174
- let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
6283
+ let teamIdArg = RubyCommand.Argument(name: "team_id", value: teamId, type: nil)
6175
6284
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
6176
6285
  let args = [apiKeyPathArg,
6177
6286
  apiKeyArg,
@@ -6183,6 +6292,7 @@ public func jazzy(config: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6183
6292
  initialBuildNumberArg,
6184
6293
  teamIdArg,
6185
6294
  teamNameArg]
6295
+ .filter { $0?.value != nil }
6186
6296
  .compactMap { $0 }
6187
6297
  let command = RubyCommand(commandID: "", methodName: "latest_testflight_build_number", className: nil, args: args)
6188
6298
  return parseInt(fromString: runner.executeCommand(command))
@@ -6210,6 +6320,7 @@ public func lcov(projectName: String,
6210
6320
  schemeArg,
6211
6321
  archArg,
6212
6322
  outputDirArg]
6323
+ .filter { $0?.value != nil }
6213
6324
  .compactMap { $0 }
6214
6325
  let command = RubyCommand(commandID: "", methodName: "lcov", className: nil, args: args)
6215
6326
  _ = runner.executeCommand(command)
@@ -6250,7 +6361,7 @@ public func mailgun(mailgunSandboxDomain: OptionalConfigValue<String?> = .fastla
6250
6361
  ciBuildLink: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6251
6362
  templatePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6252
6363
  replyTo: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6253
- attachment: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
6364
+ attachment: Any? = nil,
6254
6365
  customPlaceholders: [String: Any] = [:])
6255
6366
  {
6256
6367
  let mailgunSandboxDomainArg = mailgunSandboxDomain.asRubyArgument(name: "mailgun_sandbox_domain", type: nil)
@@ -6267,7 +6378,7 @@ public func mailgun(mailgunSandboxDomain: OptionalConfigValue<String?> = .fastla
6267
6378
  let ciBuildLinkArg = ciBuildLink.asRubyArgument(name: "ci_build_link", type: nil)
6268
6379
  let templatePathArg = templatePath.asRubyArgument(name: "template_path", type: nil)
6269
6380
  let replyToArg = replyTo.asRubyArgument(name: "reply_to", type: nil)
6270
- let attachmentArg = attachment.asRubyArgument(name: "attachment", type: nil)
6381
+ let attachmentArg = RubyCommand.Argument(name: "attachment", value: attachment, type: nil)
6271
6382
  let customPlaceholdersArg = RubyCommand.Argument(name: "custom_placeholders", value: customPlaceholders, type: nil)
6272
6383
  let args = [mailgunSandboxDomainArg,
6273
6384
  mailgunSandboxPostmasterArg,
@@ -6285,6 +6396,7 @@ public func mailgun(mailgunSandboxDomain: OptionalConfigValue<String?> = .fastla
6285
6396
  replyToArg,
6286
6397
  attachmentArg,
6287
6398
  customPlaceholdersArg]
6399
+ .filter { $0?.value != nil }
6288
6400
  .compactMap { $0 }
6289
6401
  let command = RubyCommand(commandID: "", methodName: "mailgun", className: nil, args: args)
6290
6402
  _ = runner.executeCommand(command)
@@ -6306,6 +6418,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
6306
6418
  let includeCommitBodyArg = RubyCommand.Argument(name: "include_commit_body", value: includeCommitBody, type: nil)
6307
6419
  let args = [fallbackChangelogArg,
6308
6420
  includeCommitBodyArg]
6421
+ .filter { $0?.value != nil }
6309
6422
  .compactMap { $0 }
6310
6423
  let command = RubyCommand(commandID: "", methodName: "make_changelog_from_jenkins", className: nil, args: args)
6311
6424
  _ = runner.executeCommand(command)
@@ -6495,6 +6608,7 @@ public func match(type: String = matchfile.type,
6495
6608
  outputPathArg,
6496
6609
  skipSetPartitionListArg,
6497
6610
  verboseArg]
6611
+ .filter { $0?.value != nil }
6498
6612
  .compactMap { $0 }
6499
6613
  let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: args)
6500
6614
  _ = runner.executeCommand(command)
@@ -6688,6 +6802,7 @@ public func matchNuke(type: String = "development",
6688
6802
  outputPathArg,
6689
6803
  skipSetPartitionListArg,
6690
6804
  verboseArg]
6805
+ .filter { $0?.value != nil }
6691
6806
  .compactMap { $0 }
6692
6807
  let command = RubyCommand(commandID: "", methodName: "match_nuke", className: nil, args: args)
6693
6808
  _ = runner.executeCommand(command)
@@ -6733,6 +6848,7 @@ public func modifyServices(username: String,
6733
6848
  servicesArg,
6734
6849
  teamIdArg,
6735
6850
  teamNameArg]
6851
+ .filter { $0?.value != nil }
6736
6852
  .compactMap { $0 }
6737
6853
  let command = RubyCommand(commandID: "", methodName: "modify_services", className: nil, args: args)
6738
6854
  _ = runner.executeCommand(command)
@@ -6812,6 +6928,7 @@ public func nexusUpload(file: String,
6812
6928
  proxyPasswordArg,
6813
6929
  proxyAddressArg,
6814
6930
  proxyPortArg]
6931
+ .filter { $0?.value != nil }
6815
6932
  .compactMap { $0 }
6816
6933
  let command = RubyCommand(commandID: "", methodName: "nexus_upload", className: nil, args: args)
6817
6934
  _ = runner.executeCommand(command)
@@ -6855,6 +6972,7 @@ public func notarize(package: String,
6855
6972
  printLogArg,
6856
6973
  verboseArg,
6857
6974
  apiKeyPathArg]
6975
+ .filter { $0?.value != nil }
6858
6976
  .compactMap { $0 }
6859
6977
  let command = RubyCommand(commandID: "", methodName: "notarize", className: nil, args: args)
6860
6978
  _ = runner.executeCommand(command)
@@ -6902,6 +7020,7 @@ public func notification(title: String = "fastlane",
6902
7020
  contentImageArg,
6903
7021
  openArg,
6904
7022
  executeArg]
7023
+ .filter { $0?.value != nil }
6905
7024
  .compactMap { $0 }
6906
7025
  let command = RubyCommand(commandID: "", methodName: "notification", className: nil, args: args)
6907
7026
  _ = runner.executeCommand(command)
@@ -6925,9 +7044,10 @@ public func notify() {
6925
7044
 
6926
7045
  You can use this action to get the number of commits of this branch. This is useful if you want to set the build number to the number of commits. See `fastlane actions number_of_commits` for more details.
6927
7046
  */
6928
- @discardableResult public func numberOfCommits(all: OptionalConfigValue<Any?> = .fastlaneDefault(nil)) -> Int {
6929
- let allArg = all.asRubyArgument(name: "all", type: nil)
7047
+ @discardableResult public func numberOfCommits(all: Any? = nil) -> Int {
7048
+ let allArg = RubyCommand.Argument(name: "all", value: all, type: nil)
6930
7049
  let args = [allArg]
7050
+ .filter { $0?.value != nil }
6931
7051
  .compactMap { $0 }
6932
7052
  let command = RubyCommand(commandID: "", methodName: "number_of_commits", className: nil, args: args)
6933
7053
  return parseInt(fromString: runner.executeCommand(command))
@@ -6961,19 +7081,19 @@ public func notify() {
6961
7081
  */
6962
7082
  public func oclint(oclintPath: String = "oclint",
6963
7083
  compileCommands: String = "compile_commands.json",
6964
- selectReqex: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
6965
- selectRegex: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
6966
- excludeRegex: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
7084
+ selectReqex: Any? = nil,
7085
+ selectRegex: Any? = nil,
7086
+ excludeRegex: Any? = nil,
6967
7087
  reportType: String = "html",
6968
7088
  reportPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6969
7089
  listEnabledRules: Bool = false,
6970
7090
  rc: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6971
- thresholds: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
6972
- enableRules: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
6973
- disableRules: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
6974
- maxPriority1: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
6975
- maxPriority2: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
6976
- maxPriority3: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
7091
+ thresholds: Any? = nil,
7092
+ enableRules: Any? = nil,
7093
+ disableRules: Any? = nil,
7094
+ maxPriority1: Any? = nil,
7095
+ maxPriority2: Any? = nil,
7096
+ maxPriority3: Any? = nil,
6977
7097
  enableClangStaticAnalyzer: Bool = false,
6978
7098
  enableGlobalAnalysis: Bool = false,
6979
7099
  allowDuplicatedViolations: Bool = false,
@@ -6981,19 +7101,19 @@ public func oclint(oclintPath: String = "oclint",
6981
7101
  {
6982
7102
  let oclintPathArg = RubyCommand.Argument(name: "oclint_path", value: oclintPath, type: nil)
6983
7103
  let compileCommandsArg = RubyCommand.Argument(name: "compile_commands", value: compileCommands, type: nil)
6984
- let selectReqexArg = selectReqex.asRubyArgument(name: "select_reqex", type: nil)
6985
- let selectRegexArg = selectRegex.asRubyArgument(name: "select_regex", type: nil)
6986
- let excludeRegexArg = excludeRegex.asRubyArgument(name: "exclude_regex", type: nil)
7104
+ let selectReqexArg = RubyCommand.Argument(name: "select_reqex", value: selectReqex, type: nil)
7105
+ let selectRegexArg = RubyCommand.Argument(name: "select_regex", value: selectRegex, type: nil)
7106
+ let excludeRegexArg = RubyCommand.Argument(name: "exclude_regex", value: excludeRegex, type: nil)
6987
7107
  let reportTypeArg = RubyCommand.Argument(name: "report_type", value: reportType, type: nil)
6988
7108
  let reportPathArg = reportPath.asRubyArgument(name: "report_path", type: nil)
6989
7109
  let listEnabledRulesArg = RubyCommand.Argument(name: "list_enabled_rules", value: listEnabledRules, type: nil)
6990
7110
  let rcArg = rc.asRubyArgument(name: "rc", type: nil)
6991
- let thresholdsArg = thresholds.asRubyArgument(name: "thresholds", type: nil)
6992
- let enableRulesArg = enableRules.asRubyArgument(name: "enable_rules", type: nil)
6993
- let disableRulesArg = disableRules.asRubyArgument(name: "disable_rules", type: nil)
6994
- let maxPriority1Arg = maxPriority1.asRubyArgument(name: "max_priority_1", type: nil)
6995
- let maxPriority2Arg = maxPriority2.asRubyArgument(name: "max_priority_2", type: nil)
6996
- let maxPriority3Arg = maxPriority3.asRubyArgument(name: "max_priority_3", type: nil)
7111
+ let thresholdsArg = RubyCommand.Argument(name: "thresholds", value: thresholds, type: nil)
7112
+ let enableRulesArg = RubyCommand.Argument(name: "enable_rules", value: enableRules, type: nil)
7113
+ let disableRulesArg = RubyCommand.Argument(name: "disable_rules", value: disableRules, type: nil)
7114
+ let maxPriority1Arg = RubyCommand.Argument(name: "max_priority_1", value: maxPriority1, type: nil)
7115
+ let maxPriority2Arg = RubyCommand.Argument(name: "max_priority_2", value: maxPriority2, type: nil)
7116
+ let maxPriority3Arg = RubyCommand.Argument(name: "max_priority_3", value: maxPriority3, type: nil)
6997
7117
  let enableClangStaticAnalyzerArg = RubyCommand.Argument(name: "enable_clang_static_analyzer", value: enableClangStaticAnalyzer, type: nil)
6998
7118
  let enableGlobalAnalysisArg = RubyCommand.Argument(name: "enable_global_analysis", value: enableGlobalAnalysis, type: nil)
6999
7119
  let allowDuplicatedViolationsArg = RubyCommand.Argument(name: "allow_duplicated_violations", value: allowDuplicatedViolations, type: nil)
@@ -7017,6 +7137,7 @@ public func oclint(oclintPath: String = "oclint",
7017
7137
  enableGlobalAnalysisArg,
7018
7138
  allowDuplicatedViolationsArg,
7019
7139
  extraArgArg]
7140
+ .filter { $0?.value != nil }
7020
7141
  .compactMap { $0 }
7021
7142
  let command = RubyCommand(commandID: "", methodName: "oclint", className: nil, args: args)
7022
7143
  _ = runner.executeCommand(command)
@@ -7066,6 +7187,7 @@ public func onesignal(appId: OptionalConfigValue<String?> = .fastlaneDefault(nil
7066
7187
  apnsP12PasswordArg,
7067
7188
  apnsEnvArg,
7068
7189
  organizationIdArg]
7190
+ .filter { $0?.value != nil }
7069
7191
  .compactMap { $0 }
7070
7192
  let command = RubyCommand(commandID: "", methodName: "onesignal", className: nil, args: args)
7071
7193
  _ = runner.executeCommand(command)
@@ -7139,7 +7261,7 @@ public func pem(development: Bool = false,
7139
7261
  p12Password: String,
7140
7262
  pemName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7141
7263
  outputPath: String = ".",
7142
- newProfile: OptionalConfigValue<Any?> = .fastlaneDefault(nil))
7264
+ newProfile: Any? = nil)
7143
7265
  {
7144
7266
  let developmentArg = RubyCommand.Argument(name: "development", value: development, type: nil)
7145
7267
  let websitePushArg = RubyCommand.Argument(name: "website_push", value: websitePush, type: nil)
@@ -7154,7 +7276,7 @@ public func pem(development: Bool = false,
7154
7276
  let p12PasswordArg = RubyCommand.Argument(name: "p12_password", value: p12Password, type: nil)
7155
7277
  let pemNameArg = pemName.asRubyArgument(name: "pem_name", type: nil)
7156
7278
  let outputPathArg = RubyCommand.Argument(name: "output_path", value: outputPath, type: nil)
7157
- let newProfileArg = newProfile.asRubyArgument(name: "new_profile", type: nil)
7279
+ let newProfileArg = RubyCommand.Argument(name: "new_profile", value: newProfile, type: nil)
7158
7280
  let args = [developmentArg,
7159
7281
  websitePushArg,
7160
7282
  generateP12Arg,
@@ -7169,6 +7291,7 @@ public func pem(development: Bool = false,
7169
7291
  pemNameArg,
7170
7292
  outputPathArg,
7171
7293
  newProfileArg]
7294
+ .filter { $0?.value != nil }
7172
7295
  .compactMap { $0 }
7173
7296
  let command = RubyCommand(commandID: "", methodName: "pem", className: nil, args: args)
7174
7297
  _ = runner.executeCommand(command)
@@ -7212,6 +7335,7 @@ public func pem(development: Bool = false,
7212
7335
  - devPortalTeamId: The short ID of your team in the developer portal, if you're in multiple teams. Different from your iTC team ID!
7213
7336
  - itcProvider: The provider short name to be used with the iTMSTransporter to identify your team. This value will override the automatically detected provider short name. To get provider short name run `pathToXcode.app/Contents/Applications/Application\ Loader.app/Contents/itms/bin/iTMSTransporter -m provider -u 'USERNAME' -p 'PASSWORD' -account_type itunes_connect -v off`. The short names of providers should be listed in the second column
7214
7337
  - waitProcessingInterval: Interval in seconds to wait for App Store Connect processing
7338
+ - waitProcessingTimeoutDuration: Timeout duration in seconds to wait for App Store Connect processing. If set, after exceeding timeout duration, this will `force stop` to wait for App Store Connect processing and exit with exception
7215
7339
  - waitForUploadedBuild: **DEPRECATED!** No longer needed with the transition over to the App Store Connect API - Use version info from uploaded ipa file to determine what build to use for distribution. If set to false, latest processing or any latest build will be used
7216
7340
  - rejectBuildWaitingForReview: Expire previous if it's 'waiting for review'
7217
7341
 
@@ -7238,7 +7362,7 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7238
7362
  distributeOnly: Bool = false,
7239
7363
  usesNonExemptEncryption: Bool = false,
7240
7364
  distributeExternal: Bool = false,
7241
- notifyExternalTesters: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
7365
+ notifyExternalTesters: Any? = nil,
7242
7366
  appVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7243
7367
  buildNumber: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7244
7368
  expirePreviousBuilds: Bool = false,
@@ -7247,11 +7371,12 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7247
7371
  email: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7248
7372
  testersFilePath: String = "./testers.csv",
7249
7373
  groups: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
7250
- teamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
7374
+ teamId: Any? = nil,
7251
7375
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7252
7376
  devPortalTeamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7253
7377
  itcProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7254
7378
  waitProcessingInterval: Int = 30,
7379
+ waitProcessingTimeoutDuration: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
7255
7380
  waitForUploadedBuild: Bool = false,
7256
7381
  rejectBuildWaitingForReview: Bool = false)
7257
7382
  {
@@ -7275,7 +7400,7 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7275
7400
  let distributeOnlyArg = RubyCommand.Argument(name: "distribute_only", value: distributeOnly, type: nil)
7276
7401
  let usesNonExemptEncryptionArg = RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption, type: nil)
7277
7402
  let distributeExternalArg = RubyCommand.Argument(name: "distribute_external", value: distributeExternal, type: nil)
7278
- let notifyExternalTestersArg = notifyExternalTesters.asRubyArgument(name: "notify_external_testers", type: nil)
7403
+ let notifyExternalTestersArg = RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters, type: nil)
7279
7404
  let appVersionArg = appVersion.asRubyArgument(name: "app_version", type: nil)
7280
7405
  let buildNumberArg = buildNumber.asRubyArgument(name: "build_number", type: nil)
7281
7406
  let expirePreviousBuildsArg = RubyCommand.Argument(name: "expire_previous_builds", value: expirePreviousBuilds, type: nil)
@@ -7284,11 +7409,12 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7284
7409
  let emailArg = email.asRubyArgument(name: "email", type: nil)
7285
7410
  let testersFilePathArg = RubyCommand.Argument(name: "testers_file_path", value: testersFilePath, type: nil)
7286
7411
  let groupsArg = groups.asRubyArgument(name: "groups", type: nil)
7287
- let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
7412
+ let teamIdArg = RubyCommand.Argument(name: "team_id", value: teamId, type: nil)
7288
7413
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
7289
7414
  let devPortalTeamIdArg = devPortalTeamId.asRubyArgument(name: "dev_portal_team_id", type: nil)
7290
7415
  let itcProviderArg = itcProvider.asRubyArgument(name: "itc_provider", type: nil)
7291
7416
  let waitProcessingIntervalArg = RubyCommand.Argument(name: "wait_processing_interval", value: waitProcessingInterval, type: nil)
7417
+ let waitProcessingTimeoutDurationArg = waitProcessingTimeoutDuration.asRubyArgument(name: "wait_processing_timeout_duration", type: nil)
7292
7418
  let waitForUploadedBuildArg = RubyCommand.Argument(name: "wait_for_uploaded_build", value: waitForUploadedBuild, type: nil)
7293
7419
  let rejectBuildWaitingForReviewArg = RubyCommand.Argument(name: "reject_build_waiting_for_review", value: rejectBuildWaitingForReview, type: nil)
7294
7420
  let args = [apiKeyPathArg,
@@ -7325,8 +7451,10 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7325
7451
  devPortalTeamIdArg,
7326
7452
  itcProviderArg,
7327
7453
  waitProcessingIntervalArg,
7454
+ waitProcessingTimeoutDurationArg,
7328
7455
  waitForUploadedBuildArg,
7329
7456
  rejectBuildWaitingForReviewArg]
7457
+ .filter { $0?.value != nil }
7330
7458
  .compactMap { $0 }
7331
7459
  let command = RubyCommand(commandID: "", methodName: "pilot", className: nil, args: args)
7332
7460
  _ = runner.executeCommand(command)
@@ -7350,6 +7478,7 @@ public func pluginScores(outputPath: String,
7350
7478
  let args = [outputPathArg,
7351
7479
  templatePathArg,
7352
7480
  cachePathArg]
7481
+ .filter { $0?.value != nil }
7353
7482
  .compactMap { $0 }
7354
7483
  let command = RubyCommand(commandID: "", methodName: "plugin_scores", className: nil, args: args)
7355
7484
  _ = runner.executeCommand(command)
@@ -7443,6 +7572,7 @@ public func podLibLint(useBundleExec: Bool = true,
7443
7572
  skipImportValidationArg,
7444
7573
  skipTestsArg,
7445
7574
  analyzeArg]
7575
+ .filter { $0?.value != nil }
7446
7576
  .compactMap { $0 }
7447
7577
  let command = RubyCommand(commandID: "", methodName: "pod_lib_lint", className: nil, args: args)
7448
7578
  _ = runner.executeCommand(command)
@@ -7506,6 +7636,7 @@ public func podPush(useBundleExec: Bool = false,
7506
7636
  verboseArg,
7507
7637
  useModularHeadersArg,
7508
7638
  synchronousArg]
7639
+ .filter { $0?.value != nil }
7509
7640
  .compactMap { $0 }
7510
7641
  let command = RubyCommand(commandID: "", methodName: "pod_push", className: nil, args: args)
7511
7642
  _ = runner.executeCommand(command)
@@ -7549,6 +7680,7 @@ public func podioItem(clientId: String,
7549
7680
  identifyingFieldArg,
7550
7681
  identifyingValueArg,
7551
7682
  otherFieldsArg]
7683
+ .filter { $0?.value != nil }
7552
7684
  .compactMap { $0 }
7553
7685
  let command = RubyCommand(commandID: "", methodName: "podio_item", className: nil, args: args)
7554
7686
  _ = runner.executeCommand(command)
@@ -7584,7 +7716,7 @@ public func podioItem(clientId: String,
7584
7716
  defaultRuleLevel: Any = precheckfile.defaultRuleLevel,
7585
7717
  includeInAppPurchases: Bool = precheckfile.includeInAppPurchases,
7586
7718
  useLive: Bool = precheckfile.useLive,
7587
- freeStuffInIap: OptionalConfigValue<Any?> = .fastlaneDefault(precheckfile.freeStuffInIap)) -> Bool
7719
+ freeStuffInIap: Any? = precheckfile.freeStuffInIap) -> Bool
7588
7720
  {
7589
7721
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
7590
7722
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -7596,7 +7728,7 @@ public func podioItem(clientId: String,
7596
7728
  let defaultRuleLevelArg = RubyCommand.Argument(name: "default_rule_level", value: defaultRuleLevel, type: nil)
7597
7729
  let includeInAppPurchasesArg = RubyCommand.Argument(name: "include_in_app_purchases", value: includeInAppPurchases, type: nil)
7598
7730
  let useLiveArg = RubyCommand.Argument(name: "use_live", value: useLive, type: nil)
7599
- let freeStuffInIapArg = freeStuffInIap.asRubyArgument(name: "free_stuff_in_iap", type: nil)
7731
+ let freeStuffInIapArg = RubyCommand.Argument(name: "free_stuff_in_iap", value: freeStuffInIap, type: nil)
7600
7732
  let args = [apiKeyPathArg,
7601
7733
  apiKeyArg,
7602
7734
  appIdentifierArg,
@@ -7608,6 +7740,7 @@ public func podioItem(clientId: String,
7608
7740
  includeInAppPurchasesArg,
7609
7741
  useLiveArg,
7610
7742
  freeStuffInIapArg]
7743
+ .filter { $0?.value != nil }
7611
7744
  .compactMap { $0 }
7612
7745
  let command = RubyCommand(commandID: "", methodName: "precheck", className: nil, args: args)
7613
7746
  return parseBool(fromString: runner.executeCommand(command))
@@ -7621,6 +7754,7 @@ public func podioItem(clientId: String,
7621
7754
  public func println(message: OptionalConfigValue<String?> = .fastlaneDefault(nil)) {
7622
7755
  let messageArg = message.asRubyArgument(name: "message", type: nil)
7623
7756
  let args = [messageArg]
7757
+ .filter { $0?.value != nil }
7624
7758
  .compactMap { $0 }
7625
7759
  let command = RubyCommand(commandID: "", methodName: "println", className: nil, args: args)
7626
7760
  _ = runner.executeCommand(command)
@@ -7671,7 +7805,7 @@ public func produce(username: String,
7671
7805
  skipDevcenter: Bool = false,
7672
7806
  teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7673
7807
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7674
- itcTeamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
7808
+ itcTeamId: Any? = nil,
7675
7809
  itcTeamName: OptionalConfigValue<String?> = .fastlaneDefault(nil))
7676
7810
  {
7677
7811
  let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
@@ -7691,7 +7825,7 @@ public func produce(username: String,
7691
7825
  let skipDevcenterArg = RubyCommand.Argument(name: "skip_devcenter", value: skipDevcenter, type: nil)
7692
7826
  let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
7693
7827
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
7694
- let itcTeamIdArg = itcTeamId.asRubyArgument(name: "itc_team_id", type: nil)
7828
+ let itcTeamIdArg = RubyCommand.Argument(name: "itc_team_id", value: itcTeamId, type: nil)
7695
7829
  let itcTeamNameArg = itcTeamName.asRubyArgument(name: "itc_team_name", type: nil)
7696
7830
  let args = [usernameArg,
7697
7831
  appIdentifierArg,
@@ -7712,6 +7846,7 @@ public func produce(username: String,
7712
7846
  teamNameArg,
7713
7847
  itcTeamIdArg,
7714
7848
  itcTeamNameArg]
7849
+ .filter { $0?.value != nil }
7715
7850
  .compactMap { $0 }
7716
7851
  let command = RubyCommand(commandID: "", methodName: "produce", className: nil, args: args)
7717
7852
  _ = runner.executeCommand(command)
@@ -7747,6 +7882,7 @@ public func produce(username: String,
7747
7882
  booleanArg,
7748
7883
  secureTextArg,
7749
7884
  multiLineEndKeywordArg]
7885
+ .filter { $0?.value != nil }
7750
7886
  .compactMap { $0 }
7751
7887
  let command = RubyCommand(commandID: "", methodName: "prompt", className: nil, args: args)
7752
7888
  return runner.executeCommand(command)
@@ -7772,6 +7908,7 @@ public func pushGitTags(force: Bool = false,
7772
7908
  let args = [forceArg,
7773
7909
  remoteArg,
7774
7910
  tagArg]
7911
+ .filter { $0?.value != nil }
7775
7912
  .compactMap { $0 }
7776
7913
  let command = RubyCommand(commandID: "", methodName: "push_git_tags", className: nil, args: args)
7777
7914
  _ = runner.executeCommand(command)
@@ -7822,6 +7959,7 @@ public func pushToGitRemote(localBranch: OptionalConfigValue<String?> = .fastlan
7822
7959
  noVerifyArg,
7823
7960
  setUpstreamArg,
7824
7961
  pushOptionsArg]
7962
+ .filter { $0?.value != nil }
7825
7963
  .compactMap { $0 }
7826
7964
  let command = RubyCommand(commandID: "", methodName: "push_to_git_remote", className: nil, args: args)
7827
7965
  _ = runner.executeCommand(command)
@@ -7835,6 +7973,7 @@ public func pushToGitRemote(localBranch: OptionalConfigValue<String?> = .fastlan
7835
7973
  public func puts(message: OptionalConfigValue<String?> = .fastlaneDefault(nil)) {
7836
7974
  let messageArg = message.asRubyArgument(name: "message", type: nil)
7837
7975
  let args = [messageArg]
7976
+ .filter { $0?.value != nil }
7838
7977
  .compactMap { $0 }
7839
7978
  let command = RubyCommand(commandID: "", methodName: "puts", className: nil, args: args)
7840
7979
  _ = runner.executeCommand(command)
@@ -7853,6 +7992,7 @@ public func puts(message: OptionalConfigValue<String?> = .fastlaneDefault(nil))
7853
7992
  @discardableResult public func readPodspec(path: String) -> [String: String] {
7854
7993
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
7855
7994
  let args = [pathArg]
7995
+ .filter { $0?.value != nil }
7856
7996
  .compactMap { $0 }
7857
7997
  let command = RubyCommand(commandID: "", methodName: "read_podspec", className: nil, args: args)
7858
7998
  return parseDictionary(fromString: runner.executeCommand(command))
@@ -7866,6 +8006,7 @@ public func puts(message: OptionalConfigValue<String?> = .fastlaneDefault(nil))
7866
8006
  public func recreateSchemes(project: String) {
7867
8007
  let projectArg = RubyCommand.Argument(name: "project", value: project, type: nil)
7868
8008
  let args = [projectArg]
8009
+ .filter { $0?.value != nil }
7869
8010
  .compactMap { $0 }
7870
8011
  let command = RubyCommand(commandID: "", methodName: "recreate_schemes", className: nil, args: args)
7871
8012
  _ = runner.executeCommand(command)
@@ -7913,6 +8054,7 @@ public func recreateSchemes(project: String) {
7913
8054
  teamIdArg,
7914
8055
  teamNameArg,
7915
8056
  usernameArg]
8057
+ .filter { $0?.value != nil }
7916
8058
  .compactMap { $0 }
7917
8059
  let command = RubyCommand(commandID: "", methodName: "register_device", className: nil, args: args)
7918
8060
  return runner.executeCommand(command)
@@ -7960,6 +8102,7 @@ public func registerDevices(devices: OptionalConfigValue<[String: Any]?> = .fast
7960
8102
  teamNameArg,
7961
8103
  usernameArg,
7962
8104
  platformArg]
8105
+ .filter { $0?.value != nil }
7963
8106
  .compactMap { $0 }
7964
8107
  let command = RubyCommand(commandID: "", methodName: "register_devices", className: nil, args: args)
7965
8108
  _ = runner.executeCommand(command)
@@ -7982,22 +8125,23 @@ public func registerDevices(devices: OptionalConfigValue<[String: Any]?> = .fast
7982
8125
  >- You have called the `ensure_git_status_clean` action prior to calling this action. This ensures that your repo started off in a clean state, so the only things that will get destroyed by this action are files that are created as a byproduct of the fastlane run.|
7983
8126
  >|
7984
8127
  */
7985
- public func resetGitRepo(files: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
8128
+ public func resetGitRepo(files: Any? = nil,
7986
8129
  force: Bool = false,
7987
8130
  skipClean: Bool = false,
7988
8131
  disregardGitignore: Bool = true,
7989
- exclude: OptionalConfigValue<Any?> = .fastlaneDefault(nil))
8132
+ exclude: Any? = nil)
7990
8133
  {
7991
- let filesArg = files.asRubyArgument(name: "files", type: nil)
8134
+ let filesArg = RubyCommand.Argument(name: "files", value: files, type: nil)
7992
8135
  let forceArg = RubyCommand.Argument(name: "force", value: force, type: nil)
7993
8136
  let skipCleanArg = RubyCommand.Argument(name: "skip_clean", value: skipClean, type: nil)
7994
8137
  let disregardGitignoreArg = RubyCommand.Argument(name: "disregard_gitignore", value: disregardGitignore, type: nil)
7995
- let excludeArg = exclude.asRubyArgument(name: "exclude", type: nil)
8138
+ let excludeArg = RubyCommand.Argument(name: "exclude", value: exclude, type: nil)
7996
8139
  let args = [filesArg,
7997
8140
  forceArg,
7998
8141
  skipCleanArg,
7999
8142
  disregardGitignoreArg,
8000
8143
  excludeArg]
8144
+ .filter { $0?.value != nil }
8001
8145
  .compactMap { $0 }
8002
8146
  let command = RubyCommand(commandID: "", methodName: "reset_git_repo", className: nil, args: args)
8003
8147
  _ = runner.executeCommand(command)
@@ -8017,6 +8161,7 @@ public func resetSimulatorContents(ios: OptionalConfigValue<[String]?> = .fastla
8017
8161
  let osVersionsArg = osVersions.asRubyArgument(name: "os_versions", type: nil)
8018
8162
  let args = [iosArg,
8019
8163
  osVersionsArg]
8164
+ .filter { $0?.value != nil }
8020
8165
  .compactMap { $0 }
8021
8166
  let command = RubyCommand(commandID: "", methodName: "reset_simulator_contents", className: nil, args: args)
8022
8167
  _ = runner.executeCommand(command)
@@ -8047,7 +8192,7 @@ public func resign(ipa: String,
8047
8192
  shortVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8048
8193
  bundleVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8049
8194
  bundleId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8050
- useAppEntitlements: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
8195
+ useAppEntitlements: Any? = nil,
8051
8196
  keychainPath: OptionalConfigValue<String?> = .fastlaneDefault(nil))
8052
8197
  {
8053
8198
  let ipaArg = RubyCommand.Argument(name: "ipa", value: ipa, type: nil)
@@ -8059,7 +8204,7 @@ public func resign(ipa: String,
8059
8204
  let shortVersionArg = shortVersion.asRubyArgument(name: "short_version", type: nil)
8060
8205
  let bundleVersionArg = bundleVersion.asRubyArgument(name: "bundle_version", type: nil)
8061
8206
  let bundleIdArg = bundleId.asRubyArgument(name: "bundle_id", type: nil)
8062
- let useAppEntitlementsArg = useAppEntitlements.asRubyArgument(name: "use_app_entitlements", type: nil)
8207
+ let useAppEntitlementsArg = RubyCommand.Argument(name: "use_app_entitlements", value: useAppEntitlements, type: nil)
8063
8208
  let keychainPathArg = keychainPath.asRubyArgument(name: "keychain_path", type: nil)
8064
8209
  let args = [ipaArg,
8065
8210
  signingIdentityArg,
@@ -8072,6 +8217,7 @@ public func resign(ipa: String,
8072
8217
  bundleIdArg,
8073
8218
  useAppEntitlementsArg,
8074
8219
  keychainPathArg]
8220
+ .filter { $0?.value != nil }
8075
8221
  .compactMap { $0 }
8076
8222
  let command = RubyCommand(commandID: "", methodName: "resign", className: nil, args: args)
8077
8223
  _ = runner.executeCommand(command)
@@ -8085,6 +8231,7 @@ public func resign(ipa: String,
8085
8231
  public func restoreFile(path: String) {
8086
8232
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
8087
8233
  let args = [pathArg]
8234
+ .filter { $0?.value != nil }
8088
8235
  .compactMap { $0 }
8089
8236
  let command = RubyCommand(commandID: "", methodName: "restore_file", className: nil, args: args)
8090
8237
  _ = runner.executeCommand(command)
@@ -8130,6 +8277,7 @@ public func rsync(extra: String = "-av",
8130
8277
  let args = [extraArg,
8131
8278
  sourceArg,
8132
8279
  destinationArg]
8280
+ .filter { $0?.value != nil }
8133
8281
  .compactMap { $0 }
8134
8282
  let command = RubyCommand(commandID: "", methodName: "rsync", className: nil, args: args)
8135
8283
  _ = runner.executeCommand(command)
@@ -8247,13 +8395,13 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8247
8395
  prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8248
8396
  reinstallApp: Bool = false,
8249
8397
  appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8250
- onlyTesting: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
8251
- skipTesting: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
8398
+ onlyTesting: Any? = nil,
8399
+ skipTesting: Any? = nil,
8252
8400
  testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8253
- onlyTestConfigurations: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
8254
- skipTestConfigurations: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
8401
+ onlyTestConfigurations: Any? = nil,
8402
+ skipTestConfigurations: Any? = nil,
8255
8403
  xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8256
- toolchain: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
8404
+ toolchain: Any? = nil,
8257
8405
  clean: Bool = false,
8258
8406
  codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8259
8407
  addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
@@ -8295,7 +8443,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8295
8443
  skipSlack: Bool = false,
8296
8444
  slackOnlyOnFailure: Bool = false,
8297
8445
  slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8298
- destination: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
8446
+ destination: Any? = nil,
8299
8447
  catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8300
8448
  customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8301
8449
  xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
@@ -8319,13 +8467,13 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8319
8467
  let prelaunchSimulatorArg = prelaunchSimulator.asRubyArgument(name: "prelaunch_simulator", type: nil)
8320
8468
  let reinstallAppArg = RubyCommand.Argument(name: "reinstall_app", value: reinstallApp, type: nil)
8321
8469
  let appIdentifierArg = appIdentifier.asRubyArgument(name: "app_identifier", type: nil)
8322
- let onlyTestingArg = onlyTesting.asRubyArgument(name: "only_testing", type: nil)
8323
- let skipTestingArg = skipTesting.asRubyArgument(name: "skip_testing", type: nil)
8470
+ let onlyTestingArg = RubyCommand.Argument(name: "only_testing", value: onlyTesting, type: nil)
8471
+ let skipTestingArg = RubyCommand.Argument(name: "skip_testing", value: skipTesting, type: nil)
8324
8472
  let testplanArg = testplan.asRubyArgument(name: "testplan", type: nil)
8325
- let onlyTestConfigurationsArg = onlyTestConfigurations.asRubyArgument(name: "only_test_configurations", type: nil)
8326
- let skipTestConfigurationsArg = skipTestConfigurations.asRubyArgument(name: "skip_test_configurations", type: nil)
8473
+ let onlyTestConfigurationsArg = RubyCommand.Argument(name: "only_test_configurations", value: onlyTestConfigurations, type: nil)
8474
+ let skipTestConfigurationsArg = RubyCommand.Argument(name: "skip_test_configurations", value: skipTestConfigurations, type: nil)
8327
8475
  let xctestrunArg = xctestrun.asRubyArgument(name: "xctestrun", type: nil)
8328
- let toolchainArg = toolchain.asRubyArgument(name: "toolchain", type: nil)
8476
+ let toolchainArg = RubyCommand.Argument(name: "toolchain", value: toolchain, type: nil)
8329
8477
  let cleanArg = RubyCommand.Argument(name: "clean", value: clean, type: nil)
8330
8478
  let codeCoverageArg = codeCoverage.asRubyArgument(name: "code_coverage", type: nil)
8331
8479
  let addressSanitizerArg = addressSanitizer.asRubyArgument(name: "address_sanitizer", type: nil)
@@ -8367,7 +8515,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8367
8515
  let skipSlackArg = RubyCommand.Argument(name: "skip_slack", value: skipSlack, type: nil)
8368
8516
  let slackOnlyOnFailureArg = RubyCommand.Argument(name: "slack_only_on_failure", value: slackOnlyOnFailure, type: nil)
8369
8517
  let slackDefaultPayloadsArg = slackDefaultPayloads.asRubyArgument(name: "slack_default_payloads", type: nil)
8370
- let destinationArg = destination.asRubyArgument(name: "destination", type: nil)
8518
+ let destinationArg = RubyCommand.Argument(name: "destination", value: destination, type: nil)
8371
8519
  let catalystPlatformArg = catalystPlatform.asRubyArgument(name: "catalyst_platform", type: nil)
8372
8520
  let customReportFileNameArg = customReportFileName.asRubyArgument(name: "custom_report_file_name", type: nil)
8373
8521
  let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
@@ -8448,6 +8596,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8448
8596
  useSystemScmArg,
8449
8597
  numberOfRetriesArg,
8450
8598
  failBuildArg]
8599
+ .filter { $0?.value != nil }
8451
8600
  .compactMap { $0 }
8452
8601
  let command = RubyCommand(commandID: "", methodName: "run_tests", className: nil, args: args)
8453
8602
  _ = runner.executeCommand(command)
@@ -8527,6 +8676,7 @@ public func s3(ipa: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8527
8676
  pathArg,
8528
8677
  sourceArg,
8529
8678
  aclArg]
8679
+ .filter { $0?.value != nil }
8530
8680
  .compactMap { $0 }
8531
8681
  let command = RubyCommand(commandID: "", methodName: "s3", className: nil, args: args)
8532
8682
  _ = runner.executeCommand(command)
@@ -8546,6 +8696,7 @@ public func say(text: Any,
8546
8696
  let muteArg = RubyCommand.Argument(name: "mute", value: mute, type: nil)
8547
8697
  let args = [textArg,
8548
8698
  muteArg]
8699
+ .filter { $0?.value != nil }
8549
8700
  .compactMap { $0 }
8550
8701
  let command = RubyCommand(commandID: "", methodName: "say", className: nil, args: args)
8551
8702
  _ = runner.executeCommand(command)
@@ -8642,13 +8793,13 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
8642
8793
  prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.prelaunchSimulator),
8643
8794
  reinstallApp: Bool = scanfile.reinstallApp,
8644
8795
  appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appIdentifier),
8645
- onlyTesting: OptionalConfigValue<Any?> = .fastlaneDefault(scanfile.onlyTesting),
8646
- skipTesting: OptionalConfigValue<Any?> = .fastlaneDefault(scanfile.skipTesting),
8796
+ onlyTesting: Any? = scanfile.onlyTesting,
8797
+ skipTesting: Any? = scanfile.skipTesting,
8647
8798
  testplan: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.testplan),
8648
- onlyTestConfigurations: OptionalConfigValue<Any?> = .fastlaneDefault(scanfile.onlyTestConfigurations),
8649
- skipTestConfigurations: OptionalConfigValue<Any?> = .fastlaneDefault(scanfile.skipTestConfigurations),
8799
+ onlyTestConfigurations: Any? = scanfile.onlyTestConfigurations,
8800
+ skipTestConfigurations: Any? = scanfile.skipTestConfigurations,
8650
8801
  xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xctestrun),
8651
- toolchain: OptionalConfigValue<Any?> = .fastlaneDefault(scanfile.toolchain),
8802
+ toolchain: Any? = scanfile.toolchain,
8652
8803
  clean: Bool = scanfile.clean,
8653
8804
  codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.codeCoverage),
8654
8805
  addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.addressSanitizer),
@@ -8690,7 +8841,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
8690
8841
  skipSlack: Bool = scanfile.skipSlack,
8691
8842
  slackOnlyOnFailure: Bool = scanfile.slackOnlyOnFailure,
8692
8843
  slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.slackDefaultPayloads),
8693
- destination: OptionalConfigValue<Any?> = .fastlaneDefault(scanfile.destination),
8844
+ destination: Any? = scanfile.destination,
8694
8845
  catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.catalystPlatform),
8695
8846
  customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.customReportFileName),
8696
8847
  xcodebuildCommand: String = scanfile.xcodebuildCommand,
@@ -8714,13 +8865,13 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
8714
8865
  let prelaunchSimulatorArg = prelaunchSimulator.asRubyArgument(name: "prelaunch_simulator", type: nil)
8715
8866
  let reinstallAppArg = RubyCommand.Argument(name: "reinstall_app", value: reinstallApp, type: nil)
8716
8867
  let appIdentifierArg = appIdentifier.asRubyArgument(name: "app_identifier", type: nil)
8717
- let onlyTestingArg = onlyTesting.asRubyArgument(name: "only_testing", type: nil)
8718
- let skipTestingArg = skipTesting.asRubyArgument(name: "skip_testing", type: nil)
8868
+ let onlyTestingArg = RubyCommand.Argument(name: "only_testing", value: onlyTesting, type: nil)
8869
+ let skipTestingArg = RubyCommand.Argument(name: "skip_testing", value: skipTesting, type: nil)
8719
8870
  let testplanArg = testplan.asRubyArgument(name: "testplan", type: nil)
8720
- let onlyTestConfigurationsArg = onlyTestConfigurations.asRubyArgument(name: "only_test_configurations", type: nil)
8721
- let skipTestConfigurationsArg = skipTestConfigurations.asRubyArgument(name: "skip_test_configurations", type: nil)
8871
+ let onlyTestConfigurationsArg = RubyCommand.Argument(name: "only_test_configurations", value: onlyTestConfigurations, type: nil)
8872
+ let skipTestConfigurationsArg = RubyCommand.Argument(name: "skip_test_configurations", value: skipTestConfigurations, type: nil)
8722
8873
  let xctestrunArg = xctestrun.asRubyArgument(name: "xctestrun", type: nil)
8723
- let toolchainArg = toolchain.asRubyArgument(name: "toolchain", type: nil)
8874
+ let toolchainArg = RubyCommand.Argument(name: "toolchain", value: toolchain, type: nil)
8724
8875
  let cleanArg = RubyCommand.Argument(name: "clean", value: clean, type: nil)
8725
8876
  let codeCoverageArg = codeCoverage.asRubyArgument(name: "code_coverage", type: nil)
8726
8877
  let addressSanitizerArg = addressSanitizer.asRubyArgument(name: "address_sanitizer", type: nil)
@@ -8762,7 +8913,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
8762
8913
  let skipSlackArg = RubyCommand.Argument(name: "skip_slack", value: skipSlack, type: nil)
8763
8914
  let slackOnlyOnFailureArg = RubyCommand.Argument(name: "slack_only_on_failure", value: slackOnlyOnFailure, type: nil)
8764
8915
  let slackDefaultPayloadsArg = slackDefaultPayloads.asRubyArgument(name: "slack_default_payloads", type: nil)
8765
- let destinationArg = destination.asRubyArgument(name: "destination", type: nil)
8916
+ let destinationArg = RubyCommand.Argument(name: "destination", value: destination, type: nil)
8766
8917
  let catalystPlatformArg = catalystPlatform.asRubyArgument(name: "catalyst_platform", type: nil)
8767
8918
  let customReportFileNameArg = customReportFileName.asRubyArgument(name: "custom_report_file_name", type: nil)
8768
8919
  let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
@@ -8843,6 +8994,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
8843
8994
  useSystemScmArg,
8844
8995
  numberOfRetriesArg,
8845
8996
  failBuildArg]
8997
+ .filter { $0?.value != nil }
8846
8998
  .compactMap { $0 }
8847
8999
  let command = RubyCommand(commandID: "", methodName: "scan", className: nil, args: args)
8848
9000
  _ = runner.executeCommand(command)
@@ -8878,6 +9030,7 @@ public func scp(username: String,
8878
9030
  portArg,
8879
9031
  uploadArg,
8880
9032
  downloadArg]
9033
+ .filter { $0?.value != nil }
8881
9034
  .compactMap { $0 }
8882
9035
  let command = RubyCommand(commandID: "", methodName: "scp", className: nil, args: args)
8883
9036
  _ = runner.executeCommand(command)
@@ -8977,6 +9130,7 @@ public func screengrab(androidHome: OptionalConfigValue<String?> = .fastlaneDefa
8977
9130
  reinstallAppArg,
8978
9131
  useTimestampSuffixArg,
8979
9132
  adbHostArg]
9133
+ .filter { $0?.value != nil }
8980
9134
  .compactMap { $0 }
8981
9135
  let command = RubyCommand(commandID: "", methodName: "screengrab", className: nil, args: args)
8982
9136
  _ = runner.executeCommand(command)
@@ -9000,6 +9154,7 @@ public func setBuildNumberRepository(useHgRevisionNumber: Bool = false,
9000
9154
  let xcodeprojArg = xcodeproj.asRubyArgument(name: "xcodeproj", type: nil)
9001
9155
  let args = [useHgRevisionNumberArg,
9002
9156
  xcodeprojArg]
9157
+ .filter { $0?.value != nil }
9003
9158
  .compactMap { $0 }
9004
9159
  let command = RubyCommand(commandID: "", methodName: "set_build_number_repository", className: nil, args: args)
9005
9160
  _ = runner.executeCommand(command)
@@ -9029,7 +9184,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
9029
9184
  username: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9030
9185
  version: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9031
9186
  changelog: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9032
- teamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
9187
+ teamId: Any? = nil,
9033
9188
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9034
9189
  platform: String = "ios")
9035
9190
  {
@@ -9039,7 +9194,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
9039
9194
  let usernameArg = username.asRubyArgument(name: "username", type: nil)
9040
9195
  let versionArg = version.asRubyArgument(name: "version", type: nil)
9041
9196
  let changelogArg = changelog.asRubyArgument(name: "changelog", type: nil)
9042
- let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
9197
+ let teamIdArg = RubyCommand.Argument(name: "team_id", value: teamId, type: nil)
9043
9198
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
9044
9199
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
9045
9200
  let args = [apiKeyPathArg,
@@ -9051,6 +9206,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
9051
9206
  teamIdArg,
9052
9207
  teamNameArg,
9053
9208
  platformArg]
9209
+ .filter { $0?.value != nil }
9054
9210
  .compactMap { $0 }
9055
9211
  let command = RubyCommand(commandID: "", methodName: "set_changelog", className: nil, args: args)
9056
9212
  _ = runner.executeCommand(command)
@@ -9113,6 +9269,7 @@ public func setChangelog(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDef
9113
9269
  isDraftArg,
9114
9270
  isPrereleaseArg,
9115
9271
  uploadAssetsArg]
9272
+ .filter { $0?.value != nil }
9116
9273
  .compactMap { $0 }
9117
9274
  let command = RubyCommand(commandID: "", methodName: "set_github_release", className: nil, args: args)
9118
9275
  return parseDictionary(fromString: runner.executeCommand(command))
@@ -9144,6 +9301,7 @@ public func setInfoPlistValue(key: String,
9144
9301
  valueArg,
9145
9302
  pathArg,
9146
9303
  outputFileNameArg]
9304
+ .filter { $0?.value != nil }
9147
9305
  .compactMap { $0 }
9148
9306
  let command = RubyCommand(commandID: "", methodName: "set_info_plist_value", className: nil, args: args)
9149
9307
  _ = runner.executeCommand(command)
@@ -9173,6 +9331,7 @@ public func setPodKey(useBundleExec: Bool = true,
9173
9331
  keyArg,
9174
9332
  valueArg,
9175
9333
  projectArg]
9334
+ .filter { $0?.value != nil }
9176
9335
  .compactMap { $0 }
9177
9336
  let command = RubyCommand(commandID: "", methodName: "set_pod_key", className: nil, args: args)
9178
9337
  _ = runner.executeCommand(command)
@@ -9198,6 +9357,7 @@ public func setupCi(force: Bool = false,
9198
9357
  let providerArg = provider.asRubyArgument(name: "provider", type: nil)
9199
9358
  let args = [forceArg,
9200
9359
  providerArg]
9360
+ .filter { $0?.value != nil }
9201
9361
  .compactMap { $0 }
9202
9362
  let command = RubyCommand(commandID: "", methodName: "setup_ci", className: nil, args: args)
9203
9363
  _ = runner.executeCommand(command)
@@ -9217,6 +9377,7 @@ public func setupCi(force: Bool = false,
9217
9377
  public func setupCircleCi(force: Bool = false) {
9218
9378
  let forceArg = RubyCommand.Argument(name: "force", value: force, type: nil)
9219
9379
  let args = [forceArg]
9380
+ .filter { $0?.value != nil }
9220
9381
  .compactMap { $0 }
9221
9382
  let command = RubyCommand(commandID: "", methodName: "setup_circle_ci", className: nil, args: args)
9222
9383
  _ = runner.executeCommand(command)
@@ -9284,6 +9445,7 @@ public func setupJenkins(force: Bool = false,
9284
9445
  outputDirectoryArg,
9285
9446
  derivedDataPathArg,
9286
9447
  resultBundleArg]
9448
+ .filter { $0?.value != nil }
9287
9449
  .compactMap { $0 }
9288
9450
  let command = RubyCommand(commandID: "", methodName: "setup_jenkins", className: nil, args: args)
9289
9451
  _ = runner.executeCommand(command)
@@ -9302,6 +9464,7 @@ public func setupJenkins(force: Bool = false,
9302
9464
  public func setupTravis(force: Bool = false) {
9303
9465
  let forceArg = RubyCommand.Argument(name: "force", value: force, type: nil)
9304
9466
  let args = [forceArg]
9467
+ .filter { $0?.value != nil }
9305
9468
  .compactMap { $0 }
9306
9469
  let command = RubyCommand(commandID: "", methodName: "setup_travis", className: nil, args: args)
9307
9470
  _ = runner.executeCommand(command)
@@ -9330,6 +9493,7 @@ public func setupTravis(force: Bool = false) {
9330
9493
  let args = [commandArg,
9331
9494
  logArg,
9332
9495
  errorCallbackArg]
9496
+ .filter { $0?.value != nil }
9333
9497
  .compactMap { $0 }
9334
9498
  let command = RubyCommand(commandID: "", methodName: "sh", className: nil, args: args)
9335
9499
  return runner.executeCommand(command)
@@ -9437,6 +9601,7 @@ public func setupTravis(force: Bool = false) {
9437
9601
  readonlyArg,
9438
9602
  templateNameArg,
9439
9603
  failOnNameTakenArg]
9604
+ .filter { $0?.value != nil }
9440
9605
  .compactMap { $0 }
9441
9606
  let command = RubyCommand(commandID: "", methodName: "sigh", className: nil, args: args)
9442
9607
  return runner.executeCommand(command)
@@ -9513,6 +9678,7 @@ public func slack(message: OptionalConfigValue<String?> = .fastlaneDefault(nil),
9513
9678
  successArg,
9514
9679
  failOnErrorArg,
9515
9680
  linkNamesArg]
9681
+ .filter { $0?.value != nil }
9516
9682
  .compactMap { $0 }
9517
9683
  let command = RubyCommand(commandID: "", methodName: "slack", className: nil, args: args)
9518
9684
  _ = runner.executeCommand(command)
@@ -9560,6 +9726,7 @@ public func slackTrainStart(distance: Int = 5,
9560
9726
  trainArg,
9561
9727
  railArg,
9562
9728
  reverseDirectionArg]
9729
+ .filter { $0?.value != nil }
9563
9730
  .compactMap { $0 }
9564
9731
  let command = RubyCommand(commandID: "", methodName: "slack_train_start", className: nil, args: args)
9565
9732
  _ = runner.executeCommand(command)
@@ -9621,7 +9788,7 @@ public func slather(buildDirectory: OptionalConfigValue<String?> = .fastlaneDefa
9621
9788
  gutterJson: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
9622
9789
  coberturaXml: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
9623
9790
  sonarqubeXml: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
9624
- llvmCov: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
9791
+ llvmCov: Any? = nil,
9625
9792
  json: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
9626
9793
  html: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
9627
9794
  show: Bool = false,
@@ -9653,7 +9820,7 @@ public func slather(buildDirectory: OptionalConfigValue<String?> = .fastlaneDefa
9653
9820
  let gutterJsonArg = gutterJson.asRubyArgument(name: "gutter_json", type: nil)
9654
9821
  let coberturaXmlArg = coberturaXml.asRubyArgument(name: "cobertura_xml", type: nil)
9655
9822
  let sonarqubeXmlArg = sonarqubeXml.asRubyArgument(name: "sonarqube_xml", type: nil)
9656
- let llvmCovArg = llvmCov.asRubyArgument(name: "llvm_cov", type: nil)
9823
+ let llvmCovArg = RubyCommand.Argument(name: "llvm_cov", value: llvmCov, type: nil)
9657
9824
  let jsonArg = json.asRubyArgument(name: "json", type: nil)
9658
9825
  let htmlArg = html.asRubyArgument(name: "html", type: nil)
9659
9826
  let showArg = RubyCommand.Argument(name: "show", value: show, type: nil)
@@ -9698,6 +9865,7 @@ public func slather(buildDirectory: OptionalConfigValue<String?> = .fastlaneDefa
9698
9865
  archArg,
9699
9866
  sourceFilesArg,
9700
9867
  decimalsArg]
9868
+ .filter { $0?.value != nil }
9701
9869
  .compactMap { $0 }
9702
9870
  let command = RubyCommand(commandID: "", methodName: "slather", className: nil, args: args)
9703
9871
  _ = runner.executeCommand(command)
@@ -9792,15 +9960,15 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
9792
9960
  derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.derivedDataPath),
9793
9961
  resultBundle: Bool = snapshotfile.resultBundle,
9794
9962
  testTargetName: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.testTargetName),
9795
- namespaceLogFiles: OptionalConfigValue<Any?> = .fastlaneDefault(snapshotfile.namespaceLogFiles),
9963
+ namespaceLogFiles: Any? = snapshotfile.namespaceLogFiles,
9796
9964
  concurrentSimulators: Bool = snapshotfile.concurrentSimulators,
9797
9965
  disableSlideToType: Bool = snapshotfile.disableSlideToType,
9798
9966
  clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.clonedSourcePackagesPath),
9799
9967
  skipPackageDependenciesResolution: Bool = snapshotfile.skipPackageDependenciesResolution,
9800
9968
  disablePackageAutomaticUpdates: Bool = snapshotfile.disablePackageAutomaticUpdates,
9801
9969
  testplan: OptionalConfigValue<String?> = .fastlaneDefault(snapshotfile.testplan),
9802
- onlyTesting: OptionalConfigValue<Any?> = .fastlaneDefault(snapshotfile.onlyTesting),
9803
- skipTesting: OptionalConfigValue<Any?> = .fastlaneDefault(snapshotfile.skipTesting),
9970
+ onlyTesting: Any? = snapshotfile.onlyTesting,
9971
+ skipTesting: Any? = snapshotfile.skipTesting,
9804
9972
  disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(snapshotfile.disableXcpretty),
9805
9973
  suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(snapshotfile.suppressXcodeOutput),
9806
9974
  useSystemScm: Bool = snapshotfile.useSystemScm)
@@ -9841,15 +10009,15 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
9841
10009
  let derivedDataPathArg = derivedDataPath.asRubyArgument(name: "derived_data_path", type: nil)
9842
10010
  let resultBundleArg = RubyCommand.Argument(name: "result_bundle", value: resultBundle, type: nil)
9843
10011
  let testTargetNameArg = testTargetName.asRubyArgument(name: "test_target_name", type: nil)
9844
- let namespaceLogFilesArg = namespaceLogFiles.asRubyArgument(name: "namespace_log_files", type: nil)
10012
+ let namespaceLogFilesArg = RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles, type: nil)
9845
10013
  let concurrentSimulatorsArg = RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators, type: nil)
9846
10014
  let disableSlideToTypeArg = RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType, type: nil)
9847
10015
  let clonedSourcePackagesPathArg = clonedSourcePackagesPath.asRubyArgument(name: "cloned_source_packages_path", type: nil)
9848
10016
  let skipPackageDependenciesResolutionArg = RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution, type: nil)
9849
10017
  let disablePackageAutomaticUpdatesArg = RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates, type: nil)
9850
10018
  let testplanArg = testplan.asRubyArgument(name: "testplan", type: nil)
9851
- let onlyTestingArg = onlyTesting.asRubyArgument(name: "only_testing", type: nil)
9852
- let skipTestingArg = skipTesting.asRubyArgument(name: "skip_testing", type: nil)
10019
+ let onlyTestingArg = RubyCommand.Argument(name: "only_testing", value: onlyTesting, type: nil)
10020
+ let skipTestingArg = RubyCommand.Argument(name: "skip_testing", value: skipTesting, type: nil)
9853
10021
  let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
9854
10022
  let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
9855
10023
  let useSystemScmArg = RubyCommand.Argument(name: "use_system_scm", value: useSystemScm, type: nil)
@@ -9901,6 +10069,7 @@ public func snapshot(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
9901
10069
  disableXcprettyArg,
9902
10070
  suppressXcodeOutputArg,
9903
10071
  useSystemScmArg]
10072
+ .filter { $0?.value != nil }
9904
10073
  .compactMap { $0 }
9905
10074
  let command = RubyCommand(commandID: "", methodName: "snapshot", className: nil, args: args)
9906
10075
  _ = runner.executeCommand(command)
@@ -9981,6 +10150,7 @@ public func sonar(projectConfigurationPath: OptionalConfigValue<String?> = .fast
9981
10150
  pullRequestBranchArg,
9982
10151
  pullRequestBaseArg,
9983
10152
  pullRequestKeyArg]
10153
+ .filter { $0?.value != nil }
9984
10154
  .compactMap { $0 }
9985
10155
  let command = RubyCommand(commandID: "", methodName: "sonar", className: nil, args: args)
9986
10156
  _ = runner.executeCommand(command)
@@ -10048,6 +10218,7 @@ public func sourcedocs(allModules: OptionalConfigValue<Bool?> = .fastlaneDefault
10048
10218
  reproducibleArg,
10049
10219
  schemeArg,
10050
10220
  sdkPlatformArg]
10221
+ .filter { $0?.value != nil }
10051
10222
  .compactMap { $0 }
10052
10223
  let command = RubyCommand(commandID: "", methodName: "sourcedocs", className: nil, args: args)
10053
10224
  _ = runner.executeCommand(command)
@@ -10081,6 +10252,7 @@ public func sourcedocs(allModules: OptionalConfigValue<Bool?> = .fastlaneDefault
10081
10252
  printPathsArg,
10082
10253
  copyToPathArg,
10083
10254
  copyToClipboardArg]
10255
+ .filter { $0?.value != nil }
10084
10256
  .compactMap { $0 }
10085
10257
  let command = RubyCommand(commandID: "", methodName: "spaceship_logs", className: nil, args: args)
10086
10258
  return parseArray(fromString: runner.executeCommand(command))
@@ -10094,6 +10266,7 @@ public func sourcedocs(allModules: OptionalConfigValue<Bool?> = .fastlaneDefault
10094
10266
  public func spaceshipStats(printRequestLogs: Bool = false) {
10095
10267
  let printRequestLogsArg = RubyCommand.Argument(name: "print_request_logs", value: printRequestLogs, type: nil)
10096
10268
  let args = [printRequestLogsArg]
10269
+ .filter { $0?.value != nil }
10097
10270
  .compactMap { $0 }
10098
10271
  let command = RubyCommand(commandID: "", methodName: "spaceship_stats", className: nil, args: args)
10099
10272
  _ = runner.executeCommand(command)
@@ -10141,6 +10314,7 @@ public func splunkmint(dsym: OptionalConfigValue<String?> = .fastlaneDefault(nil
10141
10314
  proxyPasswordArg,
10142
10315
  proxyAddressArg,
10143
10316
  proxyPortArg]
10317
+ .filter { $0?.value != nil }
10144
10318
  .compactMap { $0 }
10145
10319
  let command = RubyCommand(commandID: "", methodName: "splunkmint", className: nil, args: args)
10146
10320
  _ = runner.executeCommand(command)
@@ -10162,7 +10336,7 @@ public func splunkmint(dsym: OptionalConfigValue<String?> = .fastlaneDefault(nil
10162
10336
  - verbose: Increase verbosity of informational output
10163
10337
  */
10164
10338
  public func spm(command: String = "build",
10165
- enableCodeCoverage: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
10339
+ enableCodeCoverage: Any? = nil,
10166
10340
  buildPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10167
10341
  packagePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10168
10342
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -10173,7 +10347,7 @@ public func spm(command: String = "build",
10173
10347
  verbose: Bool = false)
10174
10348
  {
10175
10349
  let commandArg = RubyCommand.Argument(name: "command", value: command, type: nil)
10176
- let enableCodeCoverageArg = enableCodeCoverage.asRubyArgument(name: "enable_code_coverage", type: nil)
10350
+ let enableCodeCoverageArg = RubyCommand.Argument(name: "enable_code_coverage", value: enableCodeCoverage, type: nil)
10177
10351
  let buildPathArg = buildPath.asRubyArgument(name: "build_path", type: nil)
10178
10352
  let packagePathArg = packagePath.asRubyArgument(name: "package_path", type: nil)
10179
10353
  let xcconfigArg = xcconfig.asRubyArgument(name: "xcconfig", type: nil)
@@ -10192,6 +10366,7 @@ public func spm(command: String = "build",
10192
10366
  xcprettyOutputArg,
10193
10367
  xcprettyArgsArg,
10194
10368
  verboseArg]
10369
+ .filter { $0?.value != nil }
10195
10370
  .compactMap { $0 }
10196
10371
  let command = RubyCommand(commandID: "", methodName: "spm", className: nil, args: args)
10197
10372
  _ = runner.executeCommand(command)
@@ -10229,6 +10404,7 @@ public func ssh(username: String,
10229
10404
  portArg,
10230
10405
  commandsArg,
10231
10406
  logArg]
10407
+ .filter { $0?.value != nil }
10232
10408
  .compactMap { $0 }
10233
10409
  let command = RubyCommand(commandID: "", methodName: "ssh", className: nil, args: args)
10234
10410
  _ = runner.executeCommand(command)
@@ -10386,6 +10562,7 @@ public func supply(packageName: String,
10386
10562
  obbPatchReferencesVersionArg,
10387
10563
  obbPatchFileSizeArg,
10388
10564
  ackBundleInstallationWarningArg]
10565
+ .filter { $0?.value != nil }
10389
10566
  .compactMap { $0 }
10390
10567
  let command = RubyCommand(commandID: "", methodName: "supply", className: nil, args: args)
10391
10568
  _ = runner.executeCommand(command)
@@ -10395,7 +10572,7 @@ public func supply(packageName: String,
10395
10572
  Run swift code validation using SwiftLint
10396
10573
 
10397
10574
  - parameters:
10398
- - mode: SwiftLint mode: :lint, :autocorrect or :analyze
10575
+ - mode: SwiftLint mode: :lint, :fix, :autocorrect or :analyze
10399
10576
  - path: Specify path to lint
10400
10577
  - outputFile: Path to output SwiftLint result
10401
10578
  - configFile: Custom configuration file of SwiftLint
@@ -10410,12 +10587,12 @@ public func supply(packageName: String,
10410
10587
  - noCache: Ignore the cache when mode is :autocorrect or :lint
10411
10588
  - compilerLogPath: Compiler log path when mode is :analyze
10412
10589
  */
10413
- public func swiftlint(mode: Any = "lint",
10590
+ public func swiftlint(mode: String = "lint",
10414
10591
  path: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10415
10592
  outputFile: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10416
10593
  configFile: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10417
10594
  strict: Bool = false,
10418
- files: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
10595
+ files: Any? = nil,
10419
10596
  ignoreExitStatus: Bool = false,
10420
10597
  raiseIfSwiftlintError: Bool = false,
10421
10598
  reporter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -10430,7 +10607,7 @@ public func swiftlint(mode: Any = "lint",
10430
10607
  let outputFileArg = outputFile.asRubyArgument(name: "output_file", type: nil)
10431
10608
  let configFileArg = configFile.asRubyArgument(name: "config_file", type: nil)
10432
10609
  let strictArg = RubyCommand.Argument(name: "strict", value: strict, type: nil)
10433
- let filesArg = files.asRubyArgument(name: "files", type: nil)
10610
+ let filesArg = RubyCommand.Argument(name: "files", value: files, type: nil)
10434
10611
  let ignoreExitStatusArg = RubyCommand.Argument(name: "ignore_exit_status", value: ignoreExitStatus, type: nil)
10435
10612
  let raiseIfSwiftlintErrorArg = RubyCommand.Argument(name: "raise_if_swiftlint_error", value: raiseIfSwiftlintError, type: nil)
10436
10613
  let reporterArg = reporter.asRubyArgument(name: "reporter", type: nil)
@@ -10453,6 +10630,7 @@ public func swiftlint(mode: Any = "lint",
10453
10630
  formatArg,
10454
10631
  noCacheArg,
10455
10632
  compilerLogPathArg]
10633
+ .filter { $0?.value != nil }
10456
10634
  .compactMap { $0 }
10457
10635
  let command = RubyCommand(commandID: "", methodName: "swiftlint", className: nil, args: args)
10458
10636
  _ = runner.executeCommand(command)
@@ -10642,6 +10820,7 @@ public func syncCodeSigning(type: String = "development",
10642
10820
  outputPathArg,
10643
10821
  skipSetPartitionListArg,
10644
10822
  verboseArg]
10823
+ .filter { $0?.value != nil }
10645
10824
  .compactMap { $0 }
10646
10825
  let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: args)
10647
10826
  _ = runner.executeCommand(command)
@@ -10725,6 +10904,7 @@ public func testfairy(apiKey: String,
10725
10904
  optionsArg,
10726
10905
  customArg,
10727
10906
  timeoutArg]
10907
+ .filter { $0?.value != nil }
10728
10908
  .compactMap { $0 }
10729
10909
  let command = RubyCommand(commandID: "", methodName: "testfairy", className: nil, args: args)
10730
10910
  _ = runner.executeCommand(command)
@@ -10768,6 +10948,7 @@ public func testfairy(apiKey: String,
10768
10948
  - devPortalTeamId: The short ID of your team in the developer portal, if you're in multiple teams. Different from your iTC team ID!
10769
10949
  - itcProvider: The provider short name to be used with the iTMSTransporter to identify your team. This value will override the automatically detected provider short name. To get provider short name run `pathToXcode.app/Contents/Applications/Application\ Loader.app/Contents/itms/bin/iTMSTransporter -m provider -u 'USERNAME' -p 'PASSWORD' -account_type itunes_connect -v off`. The short names of providers should be listed in the second column
10770
10950
  - waitProcessingInterval: Interval in seconds to wait for App Store Connect processing
10951
+ - waitProcessingTimeoutDuration: Timeout duration in seconds to wait for App Store Connect processing. If set, after exceeding timeout duration, this will `force stop` to wait for App Store Connect processing and exit with exception
10771
10952
  - waitForUploadedBuild: **DEPRECATED!** No longer needed with the transition over to the App Store Connect API - Use version info from uploaded ipa file to determine what build to use for distribution. If set to false, latest processing or any latest build will be used
10772
10953
  - rejectBuildWaitingForReview: Expire previous if it's 'waiting for review'
10773
10954
 
@@ -10794,7 +10975,7 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
10794
10975
  distributeOnly: Bool = false,
10795
10976
  usesNonExemptEncryption: Bool = false,
10796
10977
  distributeExternal: Bool = false,
10797
- notifyExternalTesters: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
10978
+ notifyExternalTesters: Any? = nil,
10798
10979
  appVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10799
10980
  buildNumber: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10800
10981
  expirePreviousBuilds: Bool = false,
@@ -10803,11 +10984,12 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
10803
10984
  email: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10804
10985
  testersFilePath: String = "./testers.csv",
10805
10986
  groups: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
10806
- teamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
10987
+ teamId: Any? = nil,
10807
10988
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10808
10989
  devPortalTeamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10809
10990
  itcProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10810
10991
  waitProcessingInterval: Int = 30,
10992
+ waitProcessingTimeoutDuration: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
10811
10993
  waitForUploadedBuild: Bool = false,
10812
10994
  rejectBuildWaitingForReview: Bool = false)
10813
10995
  {
@@ -10831,7 +11013,7 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
10831
11013
  let distributeOnlyArg = RubyCommand.Argument(name: "distribute_only", value: distributeOnly, type: nil)
10832
11014
  let usesNonExemptEncryptionArg = RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption, type: nil)
10833
11015
  let distributeExternalArg = RubyCommand.Argument(name: "distribute_external", value: distributeExternal, type: nil)
10834
- let notifyExternalTestersArg = notifyExternalTesters.asRubyArgument(name: "notify_external_testers", type: nil)
11016
+ let notifyExternalTestersArg = RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters, type: nil)
10835
11017
  let appVersionArg = appVersion.asRubyArgument(name: "app_version", type: nil)
10836
11018
  let buildNumberArg = buildNumber.asRubyArgument(name: "build_number", type: nil)
10837
11019
  let expirePreviousBuildsArg = RubyCommand.Argument(name: "expire_previous_builds", value: expirePreviousBuilds, type: nil)
@@ -10840,11 +11022,12 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
10840
11022
  let emailArg = email.asRubyArgument(name: "email", type: nil)
10841
11023
  let testersFilePathArg = RubyCommand.Argument(name: "testers_file_path", value: testersFilePath, type: nil)
10842
11024
  let groupsArg = groups.asRubyArgument(name: "groups", type: nil)
10843
- let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
11025
+ let teamIdArg = RubyCommand.Argument(name: "team_id", value: teamId, type: nil)
10844
11026
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
10845
11027
  let devPortalTeamIdArg = devPortalTeamId.asRubyArgument(name: "dev_portal_team_id", type: nil)
10846
11028
  let itcProviderArg = itcProvider.asRubyArgument(name: "itc_provider", type: nil)
10847
11029
  let waitProcessingIntervalArg = RubyCommand.Argument(name: "wait_processing_interval", value: waitProcessingInterval, type: nil)
11030
+ let waitProcessingTimeoutDurationArg = waitProcessingTimeoutDuration.asRubyArgument(name: "wait_processing_timeout_duration", type: nil)
10848
11031
  let waitForUploadedBuildArg = RubyCommand.Argument(name: "wait_for_uploaded_build", value: waitForUploadedBuild, type: nil)
10849
11032
  let rejectBuildWaitingForReviewArg = RubyCommand.Argument(name: "reject_build_waiting_for_review", value: rejectBuildWaitingForReview, type: nil)
10850
11033
  let args = [apiKeyPathArg,
@@ -10881,8 +11064,10 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
10881
11064
  devPortalTeamIdArg,
10882
11065
  itcProviderArg,
10883
11066
  waitProcessingIntervalArg,
11067
+ waitProcessingTimeoutDurationArg,
10884
11068
  waitForUploadedBuildArg,
10885
11069
  rejectBuildWaitingForReviewArg]
11070
+ .filter { $0?.value != nil }
10886
11071
  .compactMap { $0 }
10887
11072
  let command = RubyCommand(commandID: "", methodName: "testflight", className: nil, args: args)
10888
11073
  _ = runner.executeCommand(command)
@@ -10924,6 +11109,7 @@ public func tryouts(appId: String,
10924
11109
  notesPathArg,
10925
11110
  notifyArg,
10926
11111
  statusArg]
11112
+ .filter { $0?.value != nil }
10927
11113
  .compactMap { $0 }
10928
11114
  let command = RubyCommand(commandID: "", methodName: "tryouts", className: nil, args: args)
10929
11115
  _ = runner.executeCommand(command)
@@ -10957,6 +11143,7 @@ public func twitter(consumerKey: String,
10957
11143
  accessTokenArg,
10958
11144
  accessTokenSecretArg,
10959
11145
  messageArg]
11146
+ .filter { $0?.value != nil }
10960
11147
  .compactMap { $0 }
10961
11148
  let command = RubyCommand(commandID: "", methodName: "twitter", className: nil, args: args)
10962
11149
  _ = runner.executeCommand(command)
@@ -10996,6 +11183,7 @@ public func unlockKeychain(path: String = "login",
10996
11183
  passwordArg,
10997
11184
  addToSearchListArg,
10998
11185
  setDefaultArg]
11186
+ .filter { $0?.value != nil }
10999
11187
  .compactMap { $0 }
11000
11188
  let command = RubyCommand(commandID: "", methodName: "unlock_keychain", className: nil, args: args)
11001
11189
  _ = runner.executeCommand(command)
@@ -11017,6 +11205,7 @@ public func updateAppGroupIdentifiers(entitlementsFile: String,
11017
11205
  let appGroupIdentifiersArg = RubyCommand.Argument(name: "app_group_identifiers", value: appGroupIdentifiers, type: nil)
11018
11206
  let args = [entitlementsFileArg,
11019
11207
  appGroupIdentifiersArg]
11208
+ .filter { $0?.value != nil }
11020
11209
  .compactMap { $0 }
11021
11210
  let command = RubyCommand(commandID: "", methodName: "update_app_group_identifiers", className: nil, args: args)
11022
11211
  _ = runner.executeCommand(command)
@@ -11042,6 +11231,7 @@ public func updateAppIdentifier(xcodeproj: String,
11042
11231
  let args = [xcodeprojArg,
11043
11232
  plistPathArg,
11044
11233
  appIdentifierArg]
11234
+ .filter { $0?.value != nil }
11045
11235
  .compactMap { $0 }
11046
11236
  let command = RubyCommand(commandID: "", methodName: "update_app_identifier", className: nil, args: args)
11047
11237
  _ = runner.executeCommand(command)
@@ -11093,6 +11283,7 @@ public func updateCodeSigningSettings(path: String,
11093
11283
  profileNameArg,
11094
11284
  profileUuidArg,
11095
11285
  bundleIdentifierArg]
11286
+ .filter { $0?.value != nil }
11096
11287
  .compactMap { $0 }
11097
11288
  let command = RubyCommand(commandID: "", methodName: "update_code_signing_settings", className: nil, args: args)
11098
11289
  _ = runner.executeCommand(command)
@@ -11127,6 +11318,7 @@ public func updateFastlane(noUpdate: Bool = false,
11127
11318
  let nightlyArg = RubyCommand.Argument(name: "nightly", value: nightly, type: nil)
11128
11319
  let args = [noUpdateArg,
11129
11320
  nightlyArg]
11321
+ .filter { $0?.value != nil }
11130
11322
  .compactMap { $0 }
11131
11323
  let command = RubyCommand(commandID: "", methodName: "update_fastlane", className: nil, args: args)
11132
11324
  _ = runner.executeCommand(command)
@@ -11148,6 +11340,7 @@ public func updateIcloudContainerIdentifiers(entitlementsFile: String,
11148
11340
  let icloudContainerIdentifiersArg = RubyCommand.Argument(name: "icloud_container_identifiers", value: icloudContainerIdentifiers, type: nil)
11149
11341
  let args = [entitlementsFileArg,
11150
11342
  icloudContainerIdentifiersArg]
11343
+ .filter { $0?.value != nil }
11151
11344
  .compactMap { $0 }
11152
11345
  let command = RubyCommand(commandID: "", methodName: "update_icloud_container_identifiers", className: nil, args: args)
11153
11346
  _ = runner.executeCommand(command)
@@ -11171,20 +11364,21 @@ public func updateInfoPlist(xcodeproj: OptionalConfigValue<String?> = .fastlaneD
11171
11364
  scheme: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11172
11365
  appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11173
11366
  displayName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11174
- block: OptionalConfigValue<Any?> = .fastlaneDefault(nil))
11367
+ block: Any? = nil)
11175
11368
  {
11176
11369
  let xcodeprojArg = xcodeproj.asRubyArgument(name: "xcodeproj", type: nil)
11177
11370
  let plistPathArg = plistPath.asRubyArgument(name: "plist_path", type: nil)
11178
11371
  let schemeArg = scheme.asRubyArgument(name: "scheme", type: nil)
11179
11372
  let appIdentifierArg = appIdentifier.asRubyArgument(name: "app_identifier", type: nil)
11180
11373
  let displayNameArg = displayName.asRubyArgument(name: "display_name", type: nil)
11181
- let blockArg = block.asRubyArgument(name: "block", type: nil)
11374
+ let blockArg = RubyCommand.Argument(name: "block", value: block, type: nil)
11182
11375
  let args = [xcodeprojArg,
11183
11376
  plistPathArg,
11184
11377
  schemeArg,
11185
11378
  appIdentifierArg,
11186
11379
  displayNameArg,
11187
11380
  blockArg]
11381
+ .filter { $0?.value != nil }
11188
11382
  .compactMap { $0 }
11189
11383
  let command = RubyCommand(commandID: "", methodName: "update_info_plist", className: nil, args: args)
11190
11384
  _ = runner.executeCommand(command)
@@ -11206,6 +11400,7 @@ public func updateKeychainAccessGroups(entitlementsFile: String,
11206
11400
  let identifiersArg = RubyCommand.Argument(name: "identifiers", value: identifiers, type: nil)
11207
11401
  let args = [entitlementsFileArg,
11208
11402
  identifiersArg]
11403
+ .filter { $0?.value != nil }
11209
11404
  .compactMap { $0 }
11210
11405
  let command = RubyCommand(commandID: "", methodName: "update_keychain_access_groups", className: nil, args: args)
11211
11406
  _ = runner.executeCommand(command)
@@ -11227,6 +11422,7 @@ public func updatePlist(plistPath: OptionalConfigValue<String?> = .fastlaneDefau
11227
11422
  let blockArg = RubyCommand.Argument(name: "block", value: block, type: nil)
11228
11423
  let args = [plistPathArg,
11229
11424
  blockArg]
11425
+ .filter { $0?.value != nil }
11230
11426
  .compactMap { $0 }
11231
11427
  let command = RubyCommand(commandID: "", methodName: "update_plist", className: nil, args: args)
11232
11428
  _ = runner.executeCommand(command)
@@ -11250,6 +11446,7 @@ public func updateProjectCodeSigning(path: String,
11250
11446
  let args = [pathArg,
11251
11447
  udidArg,
11252
11448
  uuidArg]
11449
+ .filter { $0?.value != nil }
11253
11450
  .compactMap { $0 }
11254
11451
  let command = RubyCommand(commandID: "", methodName: "update_project_code_signing", className: nil, args: args)
11255
11452
  _ = runner.executeCommand(command)
@@ -11276,17 +11473,17 @@ public func updateProjectCodeSigning(path: String,
11276
11473
  */
11277
11474
  public func updateProjectProvisioning(xcodeproj: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11278
11475
  profile: String,
11279
- targetFilter: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11476
+ targetFilter: Any? = nil,
11280
11477
  buildConfigurationFilter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11281
- buildConfiguration: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11478
+ buildConfiguration: Any? = nil,
11282
11479
  certificate: String = "/tmp/AppleIncRootCertificate.cer",
11283
11480
  codeSigningIdentity: OptionalConfigValue<String?> = .fastlaneDefault(nil))
11284
11481
  {
11285
11482
  let xcodeprojArg = xcodeproj.asRubyArgument(name: "xcodeproj", type: nil)
11286
11483
  let profileArg = RubyCommand.Argument(name: "profile", value: profile, type: nil)
11287
- let targetFilterArg = targetFilter.asRubyArgument(name: "target_filter", type: nil)
11484
+ let targetFilterArg = RubyCommand.Argument(name: "target_filter", value: targetFilter, type: nil)
11288
11485
  let buildConfigurationFilterArg = buildConfigurationFilter.asRubyArgument(name: "build_configuration_filter", type: nil)
11289
- let buildConfigurationArg = buildConfiguration.asRubyArgument(name: "build_configuration", type: nil)
11486
+ let buildConfigurationArg = RubyCommand.Argument(name: "build_configuration", value: buildConfiguration, type: nil)
11290
11487
  let certificateArg = RubyCommand.Argument(name: "certificate", value: certificate, type: nil)
11291
11488
  let codeSigningIdentityArg = codeSigningIdentity.asRubyArgument(name: "code_signing_identity", type: nil)
11292
11489
  let args = [xcodeprojArg,
@@ -11296,6 +11493,7 @@ public func updateProjectProvisioning(xcodeproj: OptionalConfigValue<String?> =
11296
11493
  buildConfigurationArg,
11297
11494
  certificateArg,
11298
11495
  codeSigningIdentityArg]
11496
+ .filter { $0?.value != nil }
11299
11497
  .compactMap { $0 }
11300
11498
  let command = RubyCommand(commandID: "", methodName: "update_project_provisioning", className: nil, args: args)
11301
11499
  _ = runner.executeCommand(command)
@@ -11321,6 +11519,7 @@ public func updateProjectTeam(path: String,
11321
11519
  let args = [pathArg,
11322
11520
  targetsArg,
11323
11521
  teamidArg]
11522
+ .filter { $0?.value != nil }
11324
11523
  .compactMap { $0 }
11325
11524
  let command = RubyCommand(commandID: "", methodName: "update_project_team", className: nil, args: args)
11326
11525
  _ = runner.executeCommand(command)
@@ -11358,6 +11557,7 @@ public func updateUrbanAirshipConfiguration(plistPath: String,
11358
11557
  productionAppKeyArg,
11359
11558
  productionAppSecretArg,
11360
11559
  detectProvisioningModeArg]
11560
+ .filter { $0?.value != nil }
11361
11561
  .compactMap { $0 }
11362
11562
  let command = RubyCommand(commandID: "", methodName: "update_urban_airship_configuration", className: nil, args: args)
11363
11563
  _ = runner.executeCommand(command)
@@ -11375,15 +11575,16 @@ public func updateUrbanAirshipConfiguration(plistPath: String,
11375
11575
  For example, you can use this to set a different URL scheme for the alpha or beta version of the app.
11376
11576
  */
11377
11577
  public func updateUrlSchemes(path: String,
11378
- urlSchemes: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11379
- updateUrlSchemes: OptionalConfigValue<Any?> = .fastlaneDefault(nil))
11578
+ urlSchemes: Any? = nil,
11579
+ updateUrlSchemes: Any? = nil)
11380
11580
  {
11381
11581
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
11382
- let urlSchemesArg = urlSchemes.asRubyArgument(name: "url_schemes", type: nil)
11383
- let updateUrlSchemesArg = updateUrlSchemes.asRubyArgument(name: "update_url_schemes", type: nil)
11582
+ let urlSchemesArg = RubyCommand.Argument(name: "url_schemes", value: urlSchemes, type: nil)
11583
+ let updateUrlSchemesArg = RubyCommand.Argument(name: "update_url_schemes", value: updateUrlSchemes, type: nil)
11384
11584
  let args = [pathArg,
11385
11585
  urlSchemesArg,
11386
11586
  updateUrlSchemesArg]
11587
+ .filter { $0?.value != nil }
11387
11588
  .compactMap { $0 }
11388
11589
  let command = RubyCommand(commandID: "", methodName: "update_url_schemes", className: nil, args: args)
11389
11590
  _ = runner.executeCommand(command)
@@ -11407,7 +11608,7 @@ public func updateUrlSchemes(path: String,
11407
11608
  */
11408
11609
  public func uploadAppPrivacyDetailsToAppStore(username: String,
11409
11610
  appIdentifier: String,
11410
- teamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11611
+ teamId: Any? = nil,
11411
11612
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11412
11613
  jsonPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11413
11614
  outputJsonPath: String = "./fastlane/app_privacy_details.json",
@@ -11417,7 +11618,7 @@ public func uploadAppPrivacyDetailsToAppStore(username: String,
11417
11618
  {
11418
11619
  let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
11419
11620
  let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
11420
- let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
11621
+ let teamIdArg = RubyCommand.Argument(name: "team_id", value: teamId, type: nil)
11421
11622
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
11422
11623
  let jsonPathArg = jsonPath.asRubyArgument(name: "json_path", type: nil)
11423
11624
  let outputJsonPathArg = RubyCommand.Argument(name: "output_json_path", value: outputJsonPath, type: nil)
@@ -11433,6 +11634,7 @@ public func uploadAppPrivacyDetailsToAppStore(username: String,
11433
11634
  skipJsonFileSavingArg,
11434
11635
  skipUploadArg,
11435
11636
  skipPublishArg]
11637
+ .filter { $0?.value != nil }
11436
11638
  .compactMap { $0 }
11437
11639
  let command = RubyCommand(commandID: "", methodName: "upload_app_privacy_details_to_app_store", className: nil, args: args)
11438
11640
  _ = runner.executeCommand(command)
@@ -11482,6 +11684,7 @@ public func uploadSymbolsToCrashlytics(dsymPath: String = "./spec/fixtures/dSYM/
11482
11684
  platformArg,
11483
11685
  dsymWorkerThreadsArg,
11484
11686
  debugArg]
11687
+ .filter { $0?.value != nil }
11485
11688
  .compactMap { $0 }
11486
11689
  let command = RubyCommand(commandID: "", methodName: "upload_symbols_to_crashlytics", className: nil, args: args)
11487
11690
  _ = runner.executeCommand(command)
@@ -11509,7 +11712,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
11509
11712
  orgSlug: String,
11510
11713
  projectSlug: String,
11511
11714
  dsymPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11512
- dsymPaths: OptionalConfigValue<Any?> = .fastlaneDefault(nil))
11715
+ dsymPaths: Any? = nil)
11513
11716
  {
11514
11717
  let apiHostArg = RubyCommand.Argument(name: "api_host", value: apiHost, type: nil)
11515
11718
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -11517,7 +11720,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
11517
11720
  let orgSlugArg = RubyCommand.Argument(name: "org_slug", value: orgSlug, type: nil)
11518
11721
  let projectSlugArg = RubyCommand.Argument(name: "project_slug", value: projectSlug, type: nil)
11519
11722
  let dsymPathArg = dsymPath.asRubyArgument(name: "dsym_path", type: nil)
11520
- let dsymPathsArg = dsymPaths.asRubyArgument(name: "dsym_paths", type: nil)
11723
+ let dsymPathsArg = RubyCommand.Argument(name: "dsym_paths", value: dsymPaths, type: nil)
11521
11724
  let args = [apiHostArg,
11522
11725
  apiKeyArg,
11523
11726
  authTokenArg,
@@ -11525,6 +11728,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
11525
11728
  projectSlugArg,
11526
11729
  dsymPathArg,
11527
11730
  dsymPathsArg]
11731
+ .filter { $0?.value != nil }
11528
11732
  .compactMap { $0 }
11529
11733
  let command = RubyCommand(commandID: "", methodName: "upload_symbols_to_sentry", className: nil, args: args)
11530
11734
  _ = runner.executeCommand(command)
@@ -11579,7 +11783,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
11579
11783
  - primarySecondSubCategory: Metadata: The english name of the primary second sub category (e.g. `Educational`, `Puzzle`)
11580
11784
  - secondaryFirstSubCategory: Metadata: The english name of the secondary first sub category (e.g. `Educational`, `Puzzle`)
11581
11785
  - secondarySecondSubCategory: Metadata: The english name of the secondary second sub category (e.g. `Educational`, `Puzzle`)
11582
- - tradeRepresentativeContactInformation: Metadata: A hash containing the trade representative contact information
11786
+ - tradeRepresentativeContactInformation: **DEPRECATED!** This is no longer used by App Store Connect - Metadata: A hash containing the trade representative contact information
11583
11787
  - appReviewInformation: Metadata: A hash containing the review information
11584
11788
  - appReviewAttachmentFile: Metadata: Path to the app review attachment file
11585
11789
  - description: Metadata: The localised app description
@@ -11629,16 +11833,16 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
11629
11833
  autoReleaseDate: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
11630
11834
  phasedRelease: Bool = false,
11631
11835
  resetRatings: Bool = false,
11632
- priceTier: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11836
+ priceTier: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
11633
11837
  appRatingConfigPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11634
11838
  submissionInformation: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11635
- teamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11839
+ teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11636
11840
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11637
11841
  devPortalTeamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11638
11842
  devPortalTeamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11639
11843
  itcProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11640
11844
  runPrecheckBeforeSubmit: Bool = true,
11641
- precheckDefaultRuleLevel: Any = "warn",
11845
+ precheckDefaultRuleLevel: String = "warn",
11642
11846
  individualMetadataItems: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
11643
11847
  appIcon: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11644
11848
  appleWatchAppIcon: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -11652,20 +11856,20 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
11652
11856
  tradeRepresentativeContactInformation: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11653
11857
  appReviewInformation: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11654
11858
  appReviewAttachmentFile: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11655
- description: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11656
- name: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11859
+ description: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11860
+ name: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11657
11861
  subtitle: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11658
11862
  keywords: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11659
11863
  promotionalText: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11660
- releaseNotes: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11661
- privacyUrl: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11662
- appleTvPrivacyPolicy: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11663
- supportUrl: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11664
- marketingUrl: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
11864
+ releaseNotes: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11865
+ privacyUrl: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11866
+ appleTvPrivacyPolicy: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11867
+ supportUrl: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11868
+ marketingUrl: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11665
11869
  languages: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
11666
11870
  ignoreLanguageDirectoryValidation: Bool = false,
11667
11871
  precheckIncludeInAppPurchases: Bool = true,
11668
- app: Any)
11872
+ app: OptionalConfigValue<Int?> = .fastlaneDefault(nil))
11669
11873
  {
11670
11874
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
11671
11875
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -11728,7 +11932,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
11728
11932
  let languagesArg = languages.asRubyArgument(name: "languages", type: nil)
11729
11933
  let ignoreLanguageDirectoryValidationArg = RubyCommand.Argument(name: "ignore_language_directory_validation", value: ignoreLanguageDirectoryValidation, type: nil)
11730
11934
  let precheckIncludeInAppPurchasesArg = RubyCommand.Argument(name: "precheck_include_in_app_purchases", value: precheckIncludeInAppPurchases, type: nil)
11731
- let appArg = RubyCommand.Argument(name: "app", value: app, type: nil)
11935
+ let appArg = app.asRubyArgument(name: "app", type: nil)
11732
11936
  let args = [apiKeyPathArg,
11733
11937
  apiKeyArg,
11734
11938
  usernameArg,
@@ -11791,6 +11995,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
11791
11995
  ignoreLanguageDirectoryValidationArg,
11792
11996
  precheckIncludeInAppPurchasesArg,
11793
11997
  appArg]
11998
+ .filter { $0?.value != nil }
11794
11999
  .compactMap { $0 }
11795
12000
  let command = RubyCommand(commandID: "", methodName: "upload_to_app_store", className: nil, args: args)
11796
12001
  _ = runner.executeCommand(command)
@@ -11948,6 +12153,7 @@ public func uploadToPlayStore(packageName: String,
11948
12153
  obbPatchReferencesVersionArg,
11949
12154
  obbPatchFileSizeArg,
11950
12155
  ackBundleInstallationWarningArg]
12156
+ .filter { $0?.value != nil }
11951
12157
  .compactMap { $0 }
11952
12158
  let command = RubyCommand(commandID: "", methodName: "upload_to_play_store", className: nil, args: args)
11953
12159
  _ = runner.executeCommand(command)
@@ -11999,6 +12205,7 @@ public func uploadToPlayStoreInternalAppSharing(packageName: String,
11999
12205
  aabPathsArg,
12000
12206
  rootUrlArg,
12001
12207
  timeoutArg]
12208
+ .filter { $0?.value != nil }
12002
12209
  .compactMap { $0 }
12003
12210
  let command = RubyCommand(commandID: "", methodName: "upload_to_play_store_internal_app_sharing", className: nil, args: args)
12004
12211
  _ = runner.executeCommand(command)
@@ -12042,6 +12249,7 @@ public func uploadToPlayStoreInternalAppSharing(packageName: String,
12042
12249
  - devPortalTeamId: The short ID of your team in the developer portal, if you're in multiple teams. Different from your iTC team ID!
12043
12250
  - itcProvider: The provider short name to be used with the iTMSTransporter to identify your team. This value will override the automatically detected provider short name. To get provider short name run `pathToXcode.app/Contents/Applications/Application\ Loader.app/Contents/itms/bin/iTMSTransporter -m provider -u 'USERNAME' -p 'PASSWORD' -account_type itunes_connect -v off`. The short names of providers should be listed in the second column
12044
12251
  - waitProcessingInterval: Interval in seconds to wait for App Store Connect processing
12252
+ - waitProcessingTimeoutDuration: Timeout duration in seconds to wait for App Store Connect processing. If set, after exceeding timeout duration, this will `force stop` to wait for App Store Connect processing and exit with exception
12045
12253
  - waitForUploadedBuild: **DEPRECATED!** No longer needed with the transition over to the App Store Connect API - Use version info from uploaded ipa file to determine what build to use for distribution. If set to false, latest processing or any latest build will be used
12046
12254
  - rejectBuildWaitingForReview: Expire previous if it's 'waiting for review'
12047
12255
 
@@ -12068,7 +12276,7 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12068
12276
  distributeOnly: Bool = false,
12069
12277
  usesNonExemptEncryption: Bool = false,
12070
12278
  distributeExternal: Bool = false,
12071
- notifyExternalTesters: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
12279
+ notifyExternalTesters: Any? = nil,
12072
12280
  appVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12073
12281
  buildNumber: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12074
12282
  expirePreviousBuilds: Bool = false,
@@ -12077,11 +12285,12 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12077
12285
  email: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12078
12286
  testersFilePath: String = "./testers.csv",
12079
12287
  groups: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
12080
- teamId: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
12288
+ teamId: Any? = nil,
12081
12289
  teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12082
12290
  devPortalTeamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12083
12291
  itcProvider: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12084
12292
  waitProcessingInterval: Int = 30,
12293
+ waitProcessingTimeoutDuration: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
12085
12294
  waitForUploadedBuild: Bool = false,
12086
12295
  rejectBuildWaitingForReview: Bool = false)
12087
12296
  {
@@ -12105,7 +12314,7 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12105
12314
  let distributeOnlyArg = RubyCommand.Argument(name: "distribute_only", value: distributeOnly, type: nil)
12106
12315
  let usesNonExemptEncryptionArg = RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption, type: nil)
12107
12316
  let distributeExternalArg = RubyCommand.Argument(name: "distribute_external", value: distributeExternal, type: nil)
12108
- let notifyExternalTestersArg = notifyExternalTesters.asRubyArgument(name: "notify_external_testers", type: nil)
12317
+ let notifyExternalTestersArg = RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters, type: nil)
12109
12318
  let appVersionArg = appVersion.asRubyArgument(name: "app_version", type: nil)
12110
12319
  let buildNumberArg = buildNumber.asRubyArgument(name: "build_number", type: nil)
12111
12320
  let expirePreviousBuildsArg = RubyCommand.Argument(name: "expire_previous_builds", value: expirePreviousBuilds, type: nil)
@@ -12114,11 +12323,12 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12114
12323
  let emailArg = email.asRubyArgument(name: "email", type: nil)
12115
12324
  let testersFilePathArg = RubyCommand.Argument(name: "testers_file_path", value: testersFilePath, type: nil)
12116
12325
  let groupsArg = groups.asRubyArgument(name: "groups", type: nil)
12117
- let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
12326
+ let teamIdArg = RubyCommand.Argument(name: "team_id", value: teamId, type: nil)
12118
12327
  let teamNameArg = teamName.asRubyArgument(name: "team_name", type: nil)
12119
12328
  let devPortalTeamIdArg = devPortalTeamId.asRubyArgument(name: "dev_portal_team_id", type: nil)
12120
12329
  let itcProviderArg = itcProvider.asRubyArgument(name: "itc_provider", type: nil)
12121
12330
  let waitProcessingIntervalArg = RubyCommand.Argument(name: "wait_processing_interval", value: waitProcessingInterval, type: nil)
12331
+ let waitProcessingTimeoutDurationArg = waitProcessingTimeoutDuration.asRubyArgument(name: "wait_processing_timeout_duration", type: nil)
12122
12332
  let waitForUploadedBuildArg = RubyCommand.Argument(name: "wait_for_uploaded_build", value: waitForUploadedBuild, type: nil)
12123
12333
  let rejectBuildWaitingForReviewArg = RubyCommand.Argument(name: "reject_build_waiting_for_review", value: rejectBuildWaitingForReview, type: nil)
12124
12334
  let args = [apiKeyPathArg,
@@ -12155,8 +12365,10 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12155
12365
  devPortalTeamIdArg,
12156
12366
  itcProviderArg,
12157
12367
  waitProcessingIntervalArg,
12368
+ waitProcessingTimeoutDurationArg,
12158
12369
  waitForUploadedBuildArg,
12159
12370
  rejectBuildWaitingForReviewArg]
12371
+ .filter { $0?.value != nil }
12160
12372
  .compactMap { $0 }
12161
12373
  let command = RubyCommand(commandID: "", methodName: "upload_to_testflight", className: nil, args: args)
12162
12374
  _ = runner.executeCommand(command)
@@ -12186,6 +12398,7 @@ public func validatePlayStoreJsonKey(jsonKey: OptionalConfigValue<String?> = .fa
12186
12398
  jsonKeyDataArg,
12187
12399
  rootUrlArg,
12188
12400
  timeoutArg]
12401
+ .filter { $0?.value != nil }
12189
12402
  .compactMap { $0 }
12190
12403
  let command = RubyCommand(commandID: "", methodName: "validate_play_store_json_key", className: nil, args: args)
12191
12404
  _ = runner.executeCommand(command)
@@ -12231,6 +12444,7 @@ public func verifyBuild(provisioningType: OptionalConfigValue<String?> = .fastla
12231
12444
  bundleIdentifierArg,
12232
12445
  ipaPathArg,
12233
12446
  buildPathArg]
12447
+ .filter { $0?.value != nil }
12234
12448
  .compactMap { $0 }
12235
12449
  let command = RubyCommand(commandID: "", methodName: "verify_build", className: nil, args: args)
12236
12450
  _ = runner.executeCommand(command)
@@ -12257,6 +12471,7 @@ public func verifyPodKeys() {
12257
12471
  public func verifyXcode(xcodePath: String) {
12258
12472
  let xcodePathArg = RubyCommand.Argument(name: "xcode_path", value: xcodePath, type: nil)
12259
12473
  let args = [xcodePathArg]
12474
+ .filter { $0?.value != nil }
12260
12475
  .compactMap { $0 }
12261
12476
  let command = RubyCommand(commandID: "", methodName: "verify_xcode", className: nil, args: args)
12262
12477
  _ = runner.executeCommand(command)
@@ -12293,6 +12508,7 @@ public func versionBumpPodspec(path: String,
12293
12508
  versionNumberArg,
12294
12509
  versionAppendixArg,
12295
12510
  requireVariablePrefixArg]
12511
+ .filter { $0?.value != nil }
12296
12512
  .compactMap { $0 }
12297
12513
  let command = RubyCommand(commandID: "", methodName: "version_bump_podspec", className: nil, args: args)
12298
12514
  _ = runner.executeCommand(command)
@@ -12312,6 +12528,7 @@ public func versionGetPodspec(path: String,
12312
12528
  let requireVariablePrefixArg = RubyCommand.Argument(name: "require_variable_prefix", value: requireVariablePrefix, type: nil)
12313
12529
  let args = [pathArg,
12314
12530
  requireVariablePrefixArg]
12531
+ .filter { $0?.value != nil }
12315
12532
  .compactMap { $0 }
12316
12533
  let command = RubyCommand(commandID: "", methodName: "version_get_podspec", className: nil, args: args)
12317
12534
  _ = runner.executeCommand(command)
@@ -12379,6 +12596,7 @@ public func xcexport() {
12379
12596
  usernameArg,
12380
12597
  teamIdArg,
12381
12598
  downloadRetryAttemptsArg]
12599
+ .filter { $0?.value != nil }
12382
12600
  .compactMap { $0 }
12383
12601
  let command = RubyCommand(commandID: "", methodName: "xcode_install", className: nil, args: args)
12384
12602
  return runner.executeCommand(command)
@@ -12417,7 +12635,7 @@ public func xcodeSelect() {
12417
12635
  */
12418
12636
  @discardableResult public func xcodeServerGetAssets(host: String,
12419
12637
  botName: String,
12420
- integrationNumber: OptionalConfigValue<Any?> = .fastlaneDefault(nil),
12638
+ integrationNumber: Any? = nil,
12421
12639
  username: String = "",
12422
12640
  password: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12423
12641
  targetFolder: String = "./xcs_assets",
@@ -12426,7 +12644,7 @@ public func xcodeSelect() {
12426
12644
  {
12427
12645
  let hostArg = RubyCommand.Argument(name: "host", value: host, type: nil)
12428
12646
  let botNameArg = RubyCommand.Argument(name: "bot_name", value: botName, type: nil)
12429
- let integrationNumberArg = integrationNumber.asRubyArgument(name: "integration_number", type: nil)
12647
+ let integrationNumberArg = RubyCommand.Argument(name: "integration_number", value: integrationNumber, type: nil)
12430
12648
  let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
12431
12649
  let passwordArg = password.asRubyArgument(name: "password", type: nil)
12432
12650
  let targetFolderArg = RubyCommand.Argument(name: "target_folder", value: targetFolder, type: nil)
@@ -12440,6 +12658,7 @@ public func xcodeSelect() {
12440
12658
  targetFolderArg,
12441
12659
  keepAllAssetsArg,
12442
12660
  trustSelfSignedCertsArg]
12661
+ .filter { $0?.value != nil }
12443
12662
  .compactMap { $0 }
12444
12663
  let command = RubyCommand(commandID: "", methodName: "xcode_server_get_assets", className: nil, args: args)
12445
12664
  return parseArray(fromString: runner.executeCommand(command))
@@ -12577,6 +12796,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
12577
12796
  xcconfigArg,
12578
12797
  ideFoundationPathArg,
12579
12798
  legacySupportArg]
12799
+ .filter { $0?.value != nil }
12580
12800
  .compactMap { $0 }
12581
12801
  let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: args)
12582
12802
  _ = runner.executeCommand(command)
@@ -12614,6 +12834,7 @@ public func xctool() {
12614
12834
  public func xcversion(version: String) {
12615
12835
  let versionArg = RubyCommand.Argument(name: "version", value: version, type: nil)
12616
12836
  let args = [versionArg]
12837
+ .filter { $0?.value != nil }
12617
12838
  .compactMap { $0 }
12618
12839
  let command = RubyCommand(commandID: "", methodName: "xcversion", className: nil, args: args)
12619
12840
  _ = runner.executeCommand(command)
@@ -12647,6 +12868,7 @@ public func xcversion(version: String) {
12647
12868
  verboseArg,
12648
12869
  passwordArg,
12649
12870
  symlinksArg]
12871
+ .filter { $0?.value != nil }
12650
12872
  .compactMap { $0 }
12651
12873
  let command = RubyCommand(commandID: "", methodName: "zip", className: nil, args: args)
12652
12874
  return runner.executeCommand(command)
@@ -12706,4 +12928,4 @@ public let snapshotfile = Snapshotfile()
12706
12928
 
12707
12929
  // Please don't remove the lines below
12708
12930
  // They are used to detect outdated files
12709
- // FastlaneRunnerAPIVersion [0.9.122]
12931
+ // FastlaneRunnerAPIVersion [0.9.123]