From 4fe80d7abb60dafbcea51dd5088a9f8d0f7db967 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Sun, 25 Sep 2011 23:05:14 +0200 Subject: [PATCH] Add WrapperRepository class --- src/Composer/Repository/WrapperRepository.php | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/Composer/Repository/WrapperRepository.php diff --git a/src/Composer/Repository/WrapperRepository.php b/src/Composer/Repository/WrapperRepository.php new file mode 100644 index 000000000..f298cb50b --- /dev/null +++ b/src/Composer/Repository/WrapperRepository.php @@ -0,0 +1,64 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Repository; + +use Composer\Package\PackageInterface; + +/** + * @author Jordi Boggiano + */ +class WrapperRepository extends ArrayRepository implements WritableRepositoryInterface +{ + private $repositories; + + public function __construct(array $repositories) + { + $this->repositories = $repositories; + } + + protected function initialize() + { + parent::initialize(); + + foreach ($this->repositories as $repo) { + foreach ($repo->getPackages() as $package) { + $this->packages[] = $package; + } + } + } + + /** + * {@inheritDoc} + */ + public function addPackage(PackageInterface $package) + { + throw new \LogicException('Can not add packages to a wrapper repository'); + } + + /** + * {@inheritDoc} + */ + public function removePackage(PackageInterface $package) + { + throw new \LogicException('Can not remove packages to a wrapper repository'); + } + + public function write() + { + foreach ($this->repositories as $repo) { + if ($repo instanceof WritableRepositoryInterface) { + $repo->write(); + } + } + } +}