class Fastlane::ToolSwiftFunction

Public Instance Methods

class_name() click to toggle source
# File fastlane/lib/fastlane/swift_fastlane_function.rb, line 345
def class_name
  function_name = camel_case_lower(string: self.function_name)
  return function_name.capitalize + "file"
end
parameters() click to toggle source
# File fastlane/lib/fastlane/swift_fastlane_function.rb, line 423
def parameters
  unless @param_names
    return ""
  end

  param_names_and_types = @param_names.zip(param_default_values, param_optionality_values, param_type_overrides).map do |param, default_value, optional, param_type_override, is_string|
    type = get_type(param: param, default_value: default_value, optional: optional, param_type_override: param_type_override, is_string: is_string)

    param = camel_case_lower(string: param)
    param = sanitize_reserved_word(word: param)
    static_var_for_parameter_name = param

    if type == "((String) -> Void)?"
      "#{param}: #{type} = nil"
    elsif (optional && type.end_with?('?') && !type.start_with?('Any')) || type.start_with?('Bool')
      "#{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

  return param_names_and_types
end
protocol_name() click to toggle source
# File fastlane/lib/fastlane/swift_fastlane_function.rb, line 340
def protocol_name
  function_name = camel_case_lower(string: self.function_name)
  return function_name.capitalize + "fileProtocol"
end
swift_default_implementations() click to toggle source
# File fastlane/lib/fastlane/swift_fastlane_function.rb, line 372
def swift_default_implementations
  unless @param_names
    return []
  end

  swift_implementations = @param_names.zip(param_default_values, param_optionality_values, param_type_overrides).map do |param, default_value, optional, param_type_override|
    type = get_type(param: param, default_value: default_value, optional: optional, param_type_override: param_type_override)
    param = camel_case_lower(string: param)
    param = sanitize_reserved_word(word: param)
    var_for_parameter_name = param

    unless default_value.nil?
      if type == "Bool" || type == "[String]" || type == "Int" || default_value.kind_of?(Array)
        default_value = default_value.to_s
      elsif default_value.kind_of?(Hash)
        # we can't handle default values for Hashes, yet
        # see method parameters for similar behavior
        default_value = "[:]"
      else
        default_value = "\"#{default_value}\""
      end
    end

    # if we don't have a default value, but the param is options, just set a default value to nil
    if optional && default_value.nil?
      default_value = "nil"
    end

    # if we don't have a default value still, we need to assign them based on type
    if type == "String"
      default_value ||= "\"\""
    end

    if type == "Bool"
      default_value ||= "false"
    end

    if type == "[String]"
      default_value ||= "[]"
    end

    if type == "[String : Any]"
      default_value ||= "[:]"
    end

    "  var #{var_for_parameter_name}: #{type} { return #{default_value} }"
  end

  return swift_implementations
end
swift_vars() click to toggle source
# File fastlane/lib/fastlane/swift_fastlane_function.rb, line 350
def swift_vars
  unless @param_names
    return []
  end
  swift_vars = @param_names.zip(param_default_values, param_optionality_values, param_type_overrides, param_descriptions).map do |param, default_value, optional, param_type_override, param_description|
    type = get_type(param: param, default_value: default_value, optional: optional, param_type_override: param_type_override)

    param = camel_case_lower(string: param)
    param = sanitize_reserved_word(word: param)
    static_var_for_parameter_name = param

    if param_description
      documentation = "  /// #{param_description}\n"
    end

    "\n#{documentation}"\
    "  var #{static_var_for_parameter_name}: #{type} { get }"
  end

  return swift_vars
end