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