Minor refactorings and changes
parent
ec94b76c7c
commit
b53a3086b6
|
@ -25,11 +25,16 @@ class InstallCommand
|
||||||
|
|
||||||
$config = $this->loadConfig();
|
$config = $this->loadConfig();
|
||||||
|
|
||||||
|
foreach ($config['repositories'] as $name => $spec) {
|
||||||
|
$composer->addRepository($name, $spec);
|
||||||
|
}
|
||||||
|
|
||||||
// TODO this should just do dependency solving based on all repositories
|
// TODO this should just do dependency solving based on all repositories
|
||||||
$packages = array();
|
$packages = array();
|
||||||
foreach ($composer->getRepositories() as $repository) {
|
foreach ($composer->getRepositories() as $repository) {
|
||||||
$packages = array_merge($packages, $repository->getPackages());
|
$packages[] = $repository->getPackages();
|
||||||
}
|
}
|
||||||
|
$packages = call_user_func_array('array_merge', $packages);
|
||||||
|
|
||||||
$lock = array();
|
$lock = array();
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
namespace Composer;
|
namespace Composer;
|
||||||
|
|
||||||
use Composer\Repository\ComposerRepository;
|
use Composer\Repository\ComposerRepository;
|
||||||
|
use Composer\Repository\PlatformRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||||
|
@ -26,6 +27,7 @@ class Composer
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->addRepository('Packagist', array('composer' => 'http://packagist.org'));
|
$this->addRepository('Packagist', array('composer' => 'http://packagist.org'));
|
||||||
|
$this->addRepository('Platform', array('platform' => ''));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addDownloader($type, $downloader)
|
public function addDownloader($type, $downloader)
|
||||||
|
@ -81,9 +83,11 @@ class Composer
|
||||||
throw new \Exception($type.' repositories not supported yet');
|
throw new \Exception($type.' repositories not supported yet');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'platform':
|
||||||
|
return new PlatformRepository;
|
||||||
|
|
||||||
case 'composer':
|
case 'composer':
|
||||||
return new ComposerRepository($url);
|
return new ComposerRepository($url);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -121,4 +121,25 @@ abstract class BasePackage implements PackageInterface
|
||||||
{
|
{
|
||||||
return $this->getName().'-'.$this->getReleaseType().'-'.$this->getVersion();
|
return $this->getName().'-'.$this->getReleaseType().'-'.$this->getVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses a version string and returns an array with the version and its type (dev, alpha, beta, RC, stable)
|
||||||
|
*
|
||||||
|
* @param string $version
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function parseVersion($version)
|
||||||
|
{
|
||||||
|
if (!preg_match('#^v?(\d+)(\.\d+)?(\.\d+)?-?(?:(beta|RC\d+|alpha|dev)?\d*)$#i', $version, $matches)) {
|
||||||
|
throw new \UnexpectedValueException('Invalid version string '.$version);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'version' => $matches[1]
|
||||||
|
.(!empty($matches[2]) ? $matches[2] : '.0')
|
||||||
|
.(!empty($matches[3]) ? $matches[3] : '.0'),
|
||||||
|
'type' => strtolower(!empty($matches[4]) ? $matches[4] : 'stable'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
namespace Composer\Repository;
|
namespace Composer\Repository;
|
||||||
|
|
||||||
use Composer\Package\MemoryPackage;
|
use Composer\Package\MemoryPackage;
|
||||||
|
use Composer\Package\BasePackage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||||
|
@ -42,7 +43,7 @@ class ComposerRepository extends ArrayRepository
|
||||||
protected function createPackages($data)
|
protected function createPackages($data)
|
||||||
{
|
{
|
||||||
foreach ($data['versions'] as $rev) {
|
foreach ($data['versions'] as $rev) {
|
||||||
$version = $this->parseVersion($rev['version']);
|
$version = BasePackage::parseVersion($rev['version']);
|
||||||
|
|
||||||
$package = new MemoryPackage($rev['name'], $version['version'], $version['type']);
|
$package = new MemoryPackage($rev['name'], $version['version'], $version['type']);
|
||||||
$package->setSourceType($rev['source']['type']);
|
$package->setSourceType($rev['source']['type']);
|
||||||
|
@ -72,18 +73,4 @@ class ComposerRepository extends ArrayRepository
|
||||||
$this->addPackage($package);
|
$this->addPackage($package);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function parseVersion($version)
|
|
||||||
{
|
|
||||||
if (!preg_match('#^v?(\d+)(\.\d+)?(\.\d+)?-?(beta|RC\d+|alpha|dev)?$#i', $version, $matches)) {
|
|
||||||
throw new \UnexpectedValueException('Invalid version string '.$version);
|
|
||||||
}
|
|
||||||
|
|
||||||
return array(
|
|
||||||
'version' => $matches[1]
|
|
||||||
.(!empty($matches[2]) ? $matches[2] : '.0')
|
|
||||||
.(!empty($matches[3]) ? $matches[3] : '.0'),
|
|
||||||
'type' => strtolower(!empty($matches[4]) ? $matches[4] : 'stable'),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?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\Package\MemoryPackage;
|
||||||
|
use Composer\Package\BasePackage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||||
|
*/
|
||||||
|
class PlatformRepository extends ArrayRepository
|
||||||
|
{
|
||||||
|
protected $packages;
|
||||||
|
|
||||||
|
protected function initialize()
|
||||||
|
{
|
||||||
|
parent::initialize();
|
||||||
|
|
||||||
|
$version = BasePackage::parseVersion(PHP_VERSION);
|
||||||
|
|
||||||
|
// TODO mark as type platform and create a special installer that skips it + one that throws an exception
|
||||||
|
$php = new MemoryPackage('php', $version['version'], $version['type']);
|
||||||
|
$this->addPackage($php);
|
||||||
|
|
||||||
|
// TODO check for php extensions
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue