Class: Composer::Repository::CompositeRepository

Inherits:
BaseRepository show all
Defined in:
lib/composer/repository/composite_repository.rb

Overview

CompositeRepository repository.

PHP Authors: Beau Simensen <[email protected]>

Ruby Authors: Ioannis Kappas <[email protected]>

Constant Summary

Constants inherited from BaseRepository

BaseRepository::SEARCH_FULLTEXT, BaseRepository::SEARCH_NAME

Instance Method Summary collapse

Constructor Details

#initialize(repositories) ⇒ CompositeRepository

Initializes filesystem repository.

Parameters:

  • repositories (Array)

    An array of repositories.



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 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

Instance Method Details

#add_repository(repository) ⇒ Object



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# 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

#countObject



104
105
106
107
108
109
110
# 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) ⇒ Object



53
54
55
56
57
58
59
60
# 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) ⇒ Object



62
63
64
65
66
67
68
69
# 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) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
47
48
49
50
51
# 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

#packagesObject

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



89
90
91
92
93
94
95
96
# 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) ⇒ Object



98
99
100
101
102
# File 'lib/composer/repository/composite_repository.rb', line 98

def remove_package(package)
  @repositories.each do |repo|
    repo.remove_package(package)
  end
end

#repositoriesObject



40
41
42
# File 'lib/composer/repository/composite_repository.rb', line 40

def repositories
  @repositories
end

#search(query, mode = 0) ⇒ Object



71
72
73
74
75
76
77
78
# File 'lib/composer/repository/composite_repository.rb', line 71

def search(query, mode = 0)
  matches = []
  @repositories.each do |repo|
    repo_matches = repo.search(query, mode)
    repo_matches.map{ |m| matches.push(m) } unless repo_matches.empty?
  end
  matches
end