fastlane/lib/fastlane/swift_fastlane_function.rb in fastlane-2.183.2 vs fastlane/lib/fastlane/swift_fastlane_function.rb in fastlane-2.184.0
- old
+ new
@@ -193,11 +193,11 @@
if default_value.nil?
"#{param}: #{type}"
else
if type == "((String) -> Void)?"
"#{param}: #{type} = nil"
- elsif optional && type.end_with?('?')
+ elsif optional && type.end_with?('?') && !type.start_with?('Any')
"#{param}: OptionalConfigValue<#{type}> = .fastlaneDefault(#{default_value})"
else
"#{param}: #{type} = #{default_value}"
end
end
@@ -278,16 +278,17 @@
def build_argument_list
unless @param_names
return "[]" # return empty list for argument
end
- argument_object_strings = @param_names.zip(param_type_overrides, param_default_values, param_optionality_values).map do |name, type_override, default_value, is_optional|
+ 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|
+ type = get_type(param: name, default_value: default_value, optional: is_optional, param_type_override: type_override, is_string: is_string)
sanitized_name = camel_case_lower(string: name)
sanitized_name = sanitize_reserved_word(word: sanitized_name)
type_string = type_override == :string_callback ? ".stringClosure" : "nil"
- if !(type_override == :string_callback || !(is_optional && default_value.nil?))
+ if !(type_override == :string_callback || !(is_optional && default_value.nil? && !type.start_with?('Any')))
{ name: "#{sanitized_name.gsub('`', '')}Arg", arg: "let #{sanitized_name.gsub('`', '')}Arg = #{sanitized_name}.asRubyArgument(name: \"#{name}\", type: #{type_string})" }
else
{ name: "#{sanitized_name.gsub('`', '')}Arg", arg: "let #{sanitized_name.gsub('`', '')}Arg = RubyCommand.Argument(name: \"#{name}\", value: #{sanitized_name}, type: #{type_string})" }
end
end
@@ -323,10 +324,11 @@
implm = "#{args.group_by { |h| h[:arg] }.keys.join("\n")}\n"
if args.empty?
implm += "let args: [RubyCommand.Argument] = []\n"
else
implm += "let args = [#{args.group_by { |h| h[:name] }.keys.join(",\n")}]\n"
+ implm += ".filter { $0?.value != nil }\n"
implm += ".compactMap { $0 }\n"
end
implm += "let command = RubyCommand(commandID: \"\", methodName: \"#{@function_name}\", className: nil, args: args)\n"
return implm + " #{return_statement}"
@@ -429,10 +431,10 @@
param = sanitize_reserved_word(word: param)
static_var_for_parameter_name = param
if type == "((String) -> Void)?"
"#{param}: #{type} = nil"
- elsif optional && type.end_with?('?')
+ elsif optional && type.end_with?('?') && !type.start_with?('Any')
"#{param}: OptionalConfigValue<#{type}> = .fastlaneDefault(#{self.class_name.downcase}.#{static_var_for_parameter_name})"
else
"#{param}: #{type} = #{self.class_name.downcase}.#{static_var_for_parameter_name}"
end
end