Add PackageRepository to define inline packages

Example:

{
    "repositories": {
        "Monolog": {
            "package": {
                "source": {
                    "url": "git://github.com/Seldaek/monolog.git",
                    "type": "git",
                    "reference": "1.0.1"
                },
                "version": "1.0.1",
                "name": "monolog/monolog"
            }
        }
    }
}
main
Jordi Boggiano 13 years ago
parent 9b24734c9d
commit aeab3c16fd

@ -17,6 +17,7 @@ $rm->setLocalRepository(new Repository\FilesystemRepository(new JsonFile('.compo
$rm->addRepository(new Repository\ComposerRepository('http://packagist.org'));
$rm->setRepositoryClass('composer', 'Composer\Repository\ComposerRepository');
$rm->setRepositoryClass('pear', 'Composer\Repository\PearRepository');
$rm->setRepositoryClass('package', 'Composer\Repository\PackageRepository');
// initialize download manager
$dm = new Downloader\DownloadManager($preferSource = false);

@ -0,0 +1,56 @@
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Repository;
use Composer\Json\JsonFile;
use Composer\Package\PackageInterface;
use Composer\Package\Loader\ArrayLoader;
use Composer\Package\Dumper\ArrayDumper;
/**
* Package repository.
*
* @author Jordi Boggiano <j.boggiano@seld.be>
*/
class PackageRepository extends ArrayRepository
{
private $config;
/**
* Initializes filesystem repository.
*
* @param array $config package definition
*/
public function __construct(array $config)
{
$this->config = $config;
}
/**
* Initializes repository (reads file, or remote address).
*/
protected function initialize()
{
parent::initialize();
if (!is_numeric(key($this->config))) {
$this->config = array($this->config);
}
foreach ($this->config as $package) {
$loader = new ArrayLoader($this->repositoryManager);
$package = $loader->load($package);
$this->addPackage($package);
}
}
}
Loading…
Cancel
Save