class Pod::Command::Spec

Private Instance Methods

all_paths_from_set(set, specific_version = nil) click to toggle source

@return [String] of spec paths one on each line

# File lib/cocoapods/command/spec.rb, line 73
def all_paths_from_set(set, specific_version = nil)
  paths = ''

  sources = set.sources

  sources.each do |source|
    versions = source.versions(set.name)

    if specific_version
      versions = versions.select { |v| v.version == specific_version }
    end

    versions.each do |version|
      spec = source.specification(set.name, version)
      paths += "#{pathname_from_spec(spec, source)}\n"
    end
  end

  raise Informative, "Can't find spec for #{set.name}." if paths.empty?

  paths
end
get_path_of_spec(spec, version_filter = false) click to toggle source

@param [String] spec

The name of the specification.

@param [Bool,String] version_filter

- If set to false, will return only the spec path for the latest version (the default).
- If set to true, will return a list of all paths of all the versions of that spec.
- If set to a String, will return only the spec path for the version specified by that string.

@return [Pathname] the absolute path or paths of the given podspec

# File lib/cocoapods/command/spec.rb, line 43
def get_path_of_spec(spec, version_filter = false)
  sets = config.sources_manager.search_by_name(spec)

  if sets.count == 1
    set = sets.first
  elsif sets.map(&:name).include?(spec)
    set = sets.find { |s| s.name == spec }
  else
    names = sets.map(&:name) * ', '
    raise Informative, "More than one spec found for '#{spec}':\n#{names}"
  end

  if version_filter.is_a? String
    all_paths_from_set(set, version_filter).split(/\n/).first
  elsif version_filter == true
    all_paths_from_set(set)
  else
    best_spec, spec_source = spec_and_source_from_set(set)
    pathname_from_spec(best_spec, spec_source)
  end
end
pathname_from_spec(spec, _source) click to toggle source

@return [Pathname] the absolute path of the given spec and source

# File lib/cocoapods/command/spec.rb, line 67
def pathname_from_spec(spec, _source)
  Pathname(spec.defined_in_file)
end
spec_and_source_from_set(set) click to toggle source

@return [Specification, Source] the highest known specification with it's source of the given

set.
# File lib/cocoapods/command/spec.rb, line 99
def spec_and_source_from_set(set)
  sources = set.sources

  best_source = best_version = nil
  sources.each do |source|
    versions = source.versions(set.name)
    versions.each do |version|
      if !best_version || version > best_version
        best_source = source
        best_version = version
      end
    end
  end

  if !best_source || !best_version
    raise Informative, "Unable to locate highest known specification for `#{set.name}'"
  end

  [best_source.specification(set.name, best_version), best_source]
end
validate_regex!(query) click to toggle source

@param [String] query the regular expression string to validate

@raise if the query is not a valid regular expression

# File lib/cocoapods/command/spec.rb, line 27
def validate_regex!(query)
  /#{query}/
rescue RegexpError
  help! 'A valid regular expression is required.'
end