class Pod::Source::Manager

Public Instance Methods

find_or_create_source_with_url(url) click to toggle source

Returns the source whose {Source#url} is equal to `url`, adding the repo in a manner similarly to `pod repo add` if it is not found.

@raise If no source with the given `url` could be created,

@return [Source] The source whose {Source#url} is equal to `url`,

@param [String] url

The URL of the source.
# File lib/cocoapods/sources_manager.rb, line 17
def find_or_create_source_with_url(url)
  unless source = source_with_url(url)
    name = name_for_url(url)
    # Hack to ensure that `repo add` output is shown.
    previous_title_level = UI.title_level
    UI.title_level = 0
    begin
      if name =~ /^master(-\d+)?$/
        Command::Setup.parse([]).run
      else
        Command::Repo::Add.parse([name, url]).run
      end
    rescue Informative => e
      message = "Unable to add a source with url `#{url}` " \
        "named `#{name}`.\n"
      message << "(#{e})\n" if Config.instance.verbose?
      message << 'You can try adding it manually in ' \
        "`#{Config.instance.repos_dir}` or via `pod repo add`."
      raise Informative, message
    ensure
      UI.title_level = previous_title_level
    end
    source = source_with_url(url)
  end

  raise "Unable to create a source with URL #{url}" unless source

  source
end
search_index_path() click to toggle source

@return [Pathname] The path where the search index should be stored.

# File lib/cocoapods/sources_manager.rb, line 63
def search_index_path
  @search_index_path ||= Config.instance.search_index_file
end
source_with_name_or_url(name_or_url) click to toggle source

Returns the source whose {Source#name} or {Source#url} is equal to the given `name_or_url`.

@return [Source] The source whose {Source#name} or {Source#url} is equal to the

given `name_or_url`.

@param [String] name_or_url

The name or the URL of the source.
# File lib/cocoapods/sources_manager.rb, line 56
def source_with_name_or_url(name_or_url)
  all.find { |s| s.name == name_or_url } ||
    find_or_create_source_with_url(name_or_url)
end
update(source_name = nil, show_output = false) click to toggle source

Updates the local clone of the spec-repo with the given name or of all the git repos if the name is omitted.

@param [String] source_name

@param [Bool] show_output

@return [void]

# File lib/cocoapods/sources_manager.rb, line 78
def update(source_name = nil, show_output = false)
  if source_name
    sources = [git_source_named(source_name)]
  else
    sources =  git_sources
  end

  changed_spec_paths = {}
  sources.each do |source|
    UI.section "Updating spec repo `#{source.name}`" do
      changed_source_paths = source.update(show_output)
      changed_spec_paths[source] = changed_source_paths if changed_source_paths.count > 0
      source.verify_compatibility!
    end
  end
  # Perform search index update operation in background.
  update_search_index_if_needed_in_background(changed_spec_paths)
end