class Composer::Repository::CompositeRepository

CompositeRepository repository.

PHP Authors: Beau Simensen <beau@dflydev.com>

Ruby Authors: Ioannis Kappas <ikappas@devworks.gr>

Public Class Methods

new(repositories) click to toggle source

Initializes filesystem repository. @param [Array] repositories An array of repositories.

# File lib/composer/repository/composite_repository.rb, line 24
def initialize(repositories)
  unless repositories
    raise ArgumentError,
          'repositories must be specified'
  end
  unless repositories.is_a?(Array)
    raise TypeError,
          'repositories type must be an \
          Array of Composer::Repository::BaseRepository'
  end
  @repositories = []
  repositories.each do |repository|
    add_repository(repository)
  end
end

Public Instance Methods

add_repository(repository) click to toggle source
# File lib/composer/repository/composite_repository.rb, line 112
def add_repository(repository)
  unless repository
    raise ArgumentError,
          'repository must be specified'
  end
  unless repository.is_a?(Composer::Repository::BaseRepository)
    raise TypeError,
          'repository type must be a \
          Composer::Repository::BaseRepository or superclass'
  end
  if repository.instance_of?(Composer::Repository::CompositeRepository)
    repository.repositories.each do |repo|
      add_repository(repo)
    end
  else
      @repositories.push(repository)
  end
end
count() click to toggle source
# File lib/composer/repository/composite_repository.rb, line 104
def count
  total = 0;
  @repositories.each do |repo|
    total += repo.count
  end
  total
end
find_package(name, version = nil) click to toggle source
# File lib/composer/repository/composite_repository.rb, line 53
def find_package(name, version = nil)
  package = nil
  @repositories.each do |repo|
    package = repo.find_package(name, version)
    break unless package.nil?
  end
  package
end
find_packages(name, version = nil) click to toggle source
# File lib/composer/repository/composite_repository.rb, line 62
def find_packages(name, version = nil)
  packages = []
  @repositories.each do |repo|
    repo_packages = repo.find_packages(name, version)
    repo_packages.map { |p| packages.push(p) } unless repo_packages.empty?
  end
  packages
end
package?(package) click to toggle source
# File lib/composer/repository/composite_repository.rb, line 44
def package?(package)
  @repositories.each do |repo|
    if repo.package?(package)
      return true
    end
  end
  false
end
packages() click to toggle source

def filter_packages(callback, class_name = ‘Composer::Package::Package’)

@repositories.each do |repo|
  if (false === repo.filter_packages(callback, class_name))
    return false
  end
end
true

end

# File lib/composer/repository/composite_repository.rb, line 89
def packages
  packages = []
  @repositories.each do |repo|
    repo_packages = repo.packages
    repo_packages.map { |p| packages.push(p) } unless repo_packages.empty?
  end
  packages
end
remove_package(package) click to toggle source
# File lib/composer/repository/composite_repository.rb, line 98
def remove_package(package)
  @repositories.each do |repo|
    repo.remove_package(package)
  end
end
repositories() click to toggle source
# File lib/composer/repository/composite_repository.rb, line 40
def repositories
  @repositories
end