Method: Pod::Dependency#initialize

Defined in:
lib/cocoapods-core/dependency.rb

#initialize(name, requirements) ⇒ Dependency #initialize(name, external_source) ⇒ Dependency #initialize(name, requirements, podspec_repo) ⇒ Dependency

Returns a new instance of Dependency.

Overloads:

  • #initialize(name, requirements) ⇒ Dependency

    Examples:

    Initialization with version requirements.

    
    Dependency.new('AFNetworking')
    Dependency.new('AFNetworking', '~> 1.0')
    Dependency.new('AFNetworking', '>= 0.5', '< 0.7')
    

    Parameters:

    • name (String)

      the name of the Pod.

    • requirements (Array, Version, String, Requirement)

      an array specifying the version requirements of the dependency.

  • #initialize(name, external_source) ⇒ Dependency

    Examples:

    Initialization with an external source.

    
    Dependency.new('libPusher', {:git     => 'example.com/repo.git'})
    Dependency.new('libPusher', {:path    => 'path/to/folder'})
    Dependency.new('libPusher', {:podspec => 'example.com/libPusher.podspec'})
    

    Parameters:

    • name (String)

      the name of the Pod.

    • external_source (Hash)

      a hash describing the external source.

  • #initialize(name, requirements, podspec_repo) ⇒ Dependency

    Examples:

    Initialization with a specific podspec repo

    
    Dependency.new('Artsy+UILabels', '~> 1.0', :source => 'https://github.com/Artsy/Specs.git')
    

    Parameters:

    • name (String)

      the name of the Pod.

    • requirements (Array, Version, String, Requirement)

      an array specifying the version requirements of the dependency.

    • podspec_repo (Hash)

      The URL of the specific podspec repo to resolve this dependency from.



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/cocoapods-core/dependency.rb', line 72

def initialize(name = nil, *requirements)
  if requirements.last.is_a?(Hash)
    additional_params = requirements.pop.select { |_, v| !v.nil? }
    additional_params = nil if additional_params.empty?

    if additional_params && @podspec_repo = additional_params[:source]
      # This dependency specifies the exact source podspec repo to use.
      additional_params.delete(:source)
      unless additional_params.empty?
        raise Informative, 'A dependency with a specified podspec repo may ' \
          "not include other source parameters (#{name})."
      end
    elsif @external_source = additional_params
      unless requirements.empty?
        raise Informative, 'A dependency with an external source may not ' \
          "specify version requirements (#{name})."
      end
    end

  elsif requirements.last == :head
    raise Informative, '`:head` dependencies have been removed. Please use ' \
      "normal external source dependencies (`:git => 'GIT_REPO_URL'`) " \
      "instead of `:head` for `#{name}`."
  end

  if requirements.length == 1 && requirements.first.is_a?(Requirement)
    requirements = requirements.first
  end
  @name = name
  @requirement = Requirement.create(requirements)
  @specific_requirement ||= nil
  @external_source ||= nil
end