Adding Config as parameter to the Driver::supports(), updating all drivers, user and tests.
parent
d8dbcab710
commit
93ebfd54b1
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
namespace Composer\Repository\Vcs;
|
namespace Composer\Repository\Vcs;
|
||||||
|
|
||||||
|
use Composer\Config;
|
||||||
use Composer\Json\JsonFile;
|
use Composer\Json\JsonFile;
|
||||||
use Composer\IO\IOInterface;
|
use Composer\IO\IOInterface;
|
||||||
|
|
||||||
|
@ -140,7 +141,7 @@ class GitBitbucketDriver extends VcsDriver implements VcsDriverInterface
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public static function supports(IOInterface $io, $url, $deep = false)
|
public static function supports(IOInterface $io, $url, Config $config, $deep = false)
|
||||||
{
|
{
|
||||||
if (!preg_match('#^https://bitbucket\.org/([^/]+)/(.+?)\.git$#', $url)) {
|
if (!preg_match('#^https://bitbucket\.org/([^/]+)/(.+?)\.git$#', $url)) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -18,6 +18,7 @@ use Composer\Util\Filesystem;
|
||||||
use Composer\Util\Git as GitUtil;
|
use Composer\Util\Git as GitUtil;
|
||||||
use Composer\IO\IOInterface;
|
use Composer\IO\IOInterface;
|
||||||
use Composer\Cache;
|
use Composer\Cache;
|
||||||
|
use Composer\Config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||||
|
@ -211,7 +212,7 @@ class GitDriver extends VcsDriver
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public static function supports(IOInterface $io, $url, $deep = false)
|
public static function supports(IOInterface $io, $url, Config $config, $deep = false)
|
||||||
{
|
{
|
||||||
if (preg_match('#(^git://|\.git$|git(?:olite)?@|//git\.|//github.com/)#i', $url)) {
|
if (preg_match('#(^git://|\.git$|git(?:olite)?@|//git\.|//github.com/)#i', $url)) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
namespace Composer\Repository\Vcs;
|
namespace Composer\Repository\Vcs;
|
||||||
|
|
||||||
|
use Composer\Config;
|
||||||
use Composer\Downloader\TransportException;
|
use Composer\Downloader\TransportException;
|
||||||
use Composer\Json\JsonFile;
|
use Composer\Json\JsonFile;
|
||||||
use Composer\Cache;
|
use Composer\Cache;
|
||||||
|
@ -231,9 +232,14 @@ class GitHubDriver extends VcsDriver
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public static function supports(IOInterface $io, $url, $deep = false)
|
public static function supports(IOInterface $io, $url, Config $config, $deep = false)
|
||||||
{
|
{
|
||||||
if (!preg_match('#^((?:https?|git)://([^/]+)/|git@([^:]+):)([^/]+)/(.+?)(?:\.git)?$#', $url)) {
|
if (!preg_match('#^((?:https?|git)://([^/]+)/|git@([^:]+):)([^/]+)/(.+?)(?:\.git)?$#', $url, $matches)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$originUrl = isset($matches[2]) ? $matches[2] : $matches[3];
|
||||||
|
if (!in_array($originUrl, $config->get('github-domains'))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
namespace Composer\Repository\Vcs;
|
namespace Composer\Repository\Vcs;
|
||||||
|
|
||||||
|
use Composer\Config;
|
||||||
use Composer\Json\JsonFile;
|
use Composer\Json\JsonFile;
|
||||||
use Composer\IO\IOInterface;
|
use Composer\IO\IOInterface;
|
||||||
|
|
||||||
|
@ -150,7 +151,7 @@ class HgBitbucketDriver extends VcsDriver
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public static function supports(IOInterface $io, $url, $deep = false)
|
public static function supports(IOInterface $io, $url, Config $config, $deep = false)
|
||||||
{
|
{
|
||||||
if (!preg_match('#^https://bitbucket\.org/([^/]+)/([^/]+)/?$#', $url)) {
|
if (!preg_match('#^https://bitbucket\.org/([^/]+)/([^/]+)/?$#', $url)) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
namespace Composer\Repository\Vcs;
|
namespace Composer\Repository\Vcs;
|
||||||
|
|
||||||
|
use Composer\Config;
|
||||||
use Composer\Json\JsonFile;
|
use Composer\Json\JsonFile;
|
||||||
use Composer\Util\ProcessExecutor;
|
use Composer\Util\ProcessExecutor;
|
||||||
use Composer\Util\Filesystem;
|
use Composer\Util\Filesystem;
|
||||||
|
@ -189,7 +190,7 @@ class HgDriver extends VcsDriver
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public static function supports(IOInterface $io, $url, $deep = false)
|
public static function supports(IOInterface $io, $url, Config $config, $deep = false)
|
||||||
{
|
{
|
||||||
if (preg_match('#(^(?:https?|ssh)://(?:[^@]@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) {
|
if (preg_match('#(^(?:https?|ssh)://(?:[^@]@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
namespace Composer\Repository\Vcs;
|
namespace Composer\Repository\Vcs;
|
||||||
|
|
||||||
|
use Composer\Config;
|
||||||
use Composer\IO\IOInterface;
|
use Composer\IO\IOInterface;
|
||||||
use Composer\Util\ProcessExecutor;
|
use Composer\Util\ProcessExecutor;
|
||||||
use Composer\Util\Perforce;
|
use Composer\Util\Perforce;
|
||||||
|
@ -158,7 +159,7 @@ class PerforceDriver extends VcsDriver
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public static function supports(IOInterface $io, $url, $deep = false)
|
public static function supports(IOInterface $io, $url, Config $config, $deep = false)
|
||||||
{
|
{
|
||||||
if ($deep || preg_match('#\b(perforce|p4)\b#i', $url)) {
|
if ($deep || preg_match('#\b(perforce|p4)\b#i', $url)) {
|
||||||
return Perforce::checkServerExists($url, new ProcessExecutor);
|
return Perforce::checkServerExists($url, new ProcessExecutor);
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
namespace Composer\Repository\Vcs;
|
namespace Composer\Repository\Vcs;
|
||||||
|
|
||||||
use Composer\Cache;
|
use Composer\Cache;
|
||||||
|
use Composer\Config;
|
||||||
use Composer\Json\JsonFile;
|
use Composer\Json\JsonFile;
|
||||||
use Composer\Util\ProcessExecutor;
|
use Composer\Util\ProcessExecutor;
|
||||||
use Composer\Util\Filesystem;
|
use Composer\Util\Filesystem;
|
||||||
|
@ -241,7 +242,7 @@ class SvnDriver extends VcsDriver
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public static function supports(IOInterface $io, $url, $deep = false)
|
public static function supports(IOInterface $io, $url, Config $config, $deep = false)
|
||||||
{
|
{
|
||||||
$url = self::normalizeUrl($url);
|
$url = self::normalizeUrl($url);
|
||||||
if (preg_match('#(^svn://|^svn\+ssh://|svn\.)#i', $url)) {
|
if (preg_match('#(^svn://|^svn\+ssh://|svn\.)#i', $url)) {
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
namespace Composer\Repository\Vcs;
|
namespace Composer\Repository\Vcs;
|
||||||
|
|
||||||
|
use Composer\Config;
|
||||||
use Composer\IO\IOInterface;
|
use Composer\IO\IOInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -91,9 +92,10 @@ interface VcsDriverInterface
|
||||||
* Checks if this driver can handle a given url
|
* Checks if this driver can handle a given url
|
||||||
*
|
*
|
||||||
* @param IOInterface $io IO instance
|
* @param IOInterface $io IO instance
|
||||||
* @param string $url
|
* @param string $url URL to validate/check
|
||||||
|
* @param Config $config current $config
|
||||||
* @param bool $deep unless true, only shallow checks (url matching typically) should be done
|
* @param bool $deep unless true, only shallow checks (url matching typically) should be done
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public static function supports(IOInterface $io, $url, $deep = false);
|
public static function supports(IOInterface $io, $url, Config $config, $deep = false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,7 +80,7 @@ class VcsRepository extends ArrayRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($this->drivers as $driver) {
|
foreach ($this->drivers as $driver) {
|
||||||
if ($driver::supports($this->io, $this->url)) {
|
if ($driver::supports($this->io, $this->url, $this->config)) {
|
||||||
$driver = new $driver($this->repoConfig, $this->io, $this->config);
|
$driver = new $driver($this->repoConfig, $this->io, $this->config);
|
||||||
$driver->initialize();
|
$driver->initialize();
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ class VcsRepository extends ArrayRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($this->drivers as $driver) {
|
foreach ($this->drivers as $driver) {
|
||||||
if ($driver::supports($this->io, $this->url, true)) {
|
if ($driver::supports($this->io, $this->url, $this->config, true)) {
|
||||||
$driver = new $driver($this->repoConfig, $this->io, $this->config);
|
$driver = new $driver($this->repoConfig, $this->io, $this->config);
|
||||||
$driver->initialize();
|
$driver->initialize();
|
||||||
|
|
||||||
|
|
|
@ -104,7 +104,6 @@ class PerforceDriverTest extends \PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
public function testHasComposerFile()
|
public function testHasComposerFile()
|
||||||
{
|
{
|
||||||
$this->setUp();
|
|
||||||
$repoConfig = array(
|
$repoConfig = array(
|
||||||
'url' => 'TEST_PERFORCE_URL',
|
'url' => 'TEST_PERFORCE_URL',
|
||||||
'depot' => 'TEST_DEPOT_CONFIG',
|
'depot' => 'TEST_DEPOT_CONFIG',
|
||||||
|
@ -142,6 +141,6 @@ class PerforceDriverTest extends \PHPUnit_Framework_TestCase
|
||||||
public function testSupportsReturnsFalseNoDeepCheck()
|
public function testSupportsReturnsFalseNoDeepCheck()
|
||||||
{
|
{
|
||||||
$this->expectOutputString('');
|
$this->expectOutputString('');
|
||||||
$this->assertFalse(PerforceDriver::supports($this->io, 'existing.url'));
|
$this->assertFalse(PerforceDriver::supports($this->io, 'existing.url', $this->config));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,10 +80,8 @@ class SvnDriverTest extends \PHPUnit_Framework_TestCase
|
||||||
*/
|
*/
|
||||||
public function testSupport($url, $assertion)
|
public function testSupport($url, $assertion)
|
||||||
{
|
{
|
||||||
if ($assertion === true) {
|
$config = new Config();
|
||||||
$this->assertTrue(SvnDriver::supports($this->getMock('Composer\IO\IOInterface'), $url));
|
$result = SvnDriver::supports($this->getMock('Composer\IO\IOInterface'), $url, $config);
|
||||||
} else {
|
$this->assertEquals($assertion, $result);
|
||||||
$this->assertFalse(SvnDriver::supports($this->getMock('Composer\IO\IOInterface'), $url));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue