diff --git a/bin/composer b/bin/composer index 5ccd3611810f..12fbab8d6004 100755 --- a/bin/composer +++ b/bin/composer @@ -23,7 +23,7 @@ $composer->setRepository('Platform', new Repository\PlatformRepository()); $composer->setRepository('Packagist', new Repository\ComposerRepository('http://packagist.org')); // initialize package -$loader = new Package\Loader\Json(); +$loader = new Package\Loader\JsonLoader(); $package = $loader->load('composer.json'); // initialize lock diff --git a/doc/composer-schema.json b/doc/composer-schema.json index 122de80cda13..8d80ccf53cc0 100644 --- a/doc/composer-schema.json +++ b/doc/composer-schema.json @@ -9,7 +9,7 @@ "required": true }, "type": { - "description": "Package type, either 'Library', or the parent project it applies to if it's a plugin for a framework or application (e.g. 'Symfony2', 'Typo3', 'Drupal', ..).", + "description": "Package type, either 'Library', or the parent project it applies to if it's a plugin for a framework or application (e.g. 'Symfony2', 'Typo3', 'Drupal', ..), note that this has to be defined and communicated by any project implementing a custom composer installer, those are just unreliable examples.", "type": "string", "optional": true }, diff --git a/src/Composer/Command/InstallCommand.php b/src/Composer/Command/InstallCommand.php index f183c049b7e6..b2e41a522bf0 100644 --- a/src/Composer/Command/InstallCommand.php +++ b/src/Composer/Command/InstallCommand.php @@ -13,6 +13,8 @@ namespace Composer\Command; use Composer\DependencyResolver; +use Composer\DependencyResolver\Pool; +use Composer\DependencyResolver\Request; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -43,7 +45,7 @@ protected function configure() protected function execute(InputInterface $input, OutputInterface $output) { if ($this->getLock()->isLocked()) { - $this->writeln('Found lockfile. Reading'); + $output->writeln('Found lockfile. Reading'); foreach ($this->getLock()->getLockedPackages() as $package) { $installer = $this->getComposer()->getInstaller($package->getType()); diff --git a/src/Composer/Composer.php b/src/Composer/Composer.php index ceeb16735a4c..a5ca2a56e5bf 100644 --- a/src/Composer/Composer.php +++ b/src/Composer/Composer.php @@ -13,6 +13,7 @@ namespace Composer; use Composer\Installer\InstallerInterface; +use Composer\Repository\RepositoryInterface; /** * @author Jordi Boggiano diff --git a/src/Composer/Package/Loader/ArrayLoader.php b/src/Composer/Package/Loader/ArrayLoader.php index 89f2d3307d2c..83a6e20510f9 100644 --- a/src/Composer/Package/Loader/ArrayLoader.php +++ b/src/Composer/Package/Loader/ArrayLoader.php @@ -36,7 +36,7 @@ public function load($config) $version = $versionParser->parse($config['version']); $package = new Package\MemoryPackage($config['name'], $version['version'], $version['type']); - $package->setType($config['type']); + $package->setType(isset($config['type']) ? $config['type'] : 'library'); if (isset($config['extra'])) { $package->setExtra($config['extra']); @@ -99,7 +99,7 @@ private function loadLinksFromConfig($srcPackageName, $description, array $links $links[] = new Package\Link($srcPackageName, $packageName, $constraint, $description); } - return $requirements; + return $links; } private function validateConfig(array $config) @@ -107,9 +107,6 @@ private function validateConfig(array $config) if (!isset($config['name'])) { throw new \UnexpectedValueException('name is required for package'); } - if (!isset($config['type'])) { - throw new \UnexpectedValueException('type is required for package'); - } if (!isset($config['version'])) { throw new \UnexpectedValueException('version is required for package'); } diff --git a/src/Composer/Repository/PlatformRepository.php b/src/Composer/Repository/PlatformRepository.php index 624cc788b361..5a94eee5579a 100644 --- a/src/Composer/Repository/PlatformRepository.php +++ b/src/Composer/Repository/PlatformRepository.php @@ -14,6 +14,7 @@ use Composer\Package\MemoryPackage; use Composer\Package\BasePackage; +use Composer\Package\Version\VersionParser; /** * @author Jordi Boggiano @@ -24,10 +25,12 @@ protected function initialize() { parent::initialize(); + $versionParser = new VersionParser(); + try { - $version = BasePackage::parseVersion(PHP_VERSION); + $version = $versionParser->parse(PHP_VERSION); } catch (\UnexpectedValueException $e) { - $version = BasePackage::parseVersion(preg_replace('#^(.+?)(-.+)?$#', '$1', PHP_VERSION)); + $version = $versionParser->parse(preg_replace('#^(.+?)(-.+)?$#', '$1', PHP_VERSION)); } $php = new MemoryPackage('php', $version['version'], $version['type']); @@ -40,7 +43,7 @@ protected function initialize() $reflExt = new \ReflectionExtension($ext); try { - $version = BasePackage::parseVersion($reflExt->getVersion()); + $version = $versionParser->parse($reflExt->getVersion()); } catch (\UnexpectedValueException $e) { $version = array('version' => '0', 'type' => 'stable'); } diff --git a/src/Composer/Repository/RepositoryInterface.php b/src/Composer/Repository/RepositoryInterface.php index ac702140d225..49e16690edcd 100644 --- a/src/Composer/Repository/RepositoryInterface.php +++ b/src/Composer/Repository/RepositoryInterface.php @@ -17,8 +17,5 @@ */ interface RepositoryInterface extends \Countable { - static function supports($type, $name = '', $url = ''); - static function create($type, $name = '', $url = ''); - function getPackages(); } diff --git a/tests/Composer/Test/DependencyResolver/SolverTest.php b/tests/Composer/Test/DependencyResolver/SolverTest.php index 97267673793e..8fc8fc630ef4 100644 --- a/tests/Composer/Test/DependencyResolver/SolverTest.php +++ b/tests/Composer/Test/DependencyResolver/SolverTest.php @@ -213,28 +213,6 @@ public function testInstallOneOfTwoAlternatives() )); } - /** - * @TODO: fix packagist.org bug - */ - public function BROKEN_testSolverWithComposerRepo() - { - $this->repoInstalled = new PlatformRepository; - - // overwrite solver with custom installed repo - $this->solver = new Solver($this->policy, $this->pool, $this->repoInstalled); - - $this->repo = new ComposerRepository('http://packagist.org'); - list($monolog) = $this->repo->getPackages(); - - $this->reposComplete(); - - $this->request->install('Monolog'); - - $this->checkSolverResult(array( - array('job' => 'install', 'package' => $monolog), - )); - } - protected function reposComplete() { $this->pool->addRepository($this->repoInstalled);