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);