Allow wildcards in repository path names.
parent
7267b2ed90
commit
323537ad0f
|
@ -97,10 +97,10 @@ class PathRepository extends ArrayRepository
|
|||
{
|
||||
parent::initialize();
|
||||
|
||||
$path = $this->getPath();
|
||||
foreach ($this->getPaths() as $path) {
|
||||
$composerFilePath = $path.'composer.json';
|
||||
if (!file_exists($composerFilePath)) {
|
||||
throw new \RuntimeException(sprintf('No `composer.json` file found in path repository "%s"', $path));
|
||||
continue;
|
||||
}
|
||||
|
||||
$json = file_get_contents($composerFilePath);
|
||||
|
@ -121,12 +121,15 @@ class PathRepository extends ArrayRepository
|
|||
$package = $this->loader->load($package);
|
||||
$this->addPackage($package);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* Get a list of all absolute path names matching the supplied urls
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
private function getPath()
|
||||
private function getPaths()
|
||||
{
|
||||
return realpath(rtrim($this->url, '/')) . '/';
|
||||
return glob($this->url, GLOB_MARK|GLOB_ONLYDIR);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"name": "test/path",
|
||||
"name": "test/path-versioned",
|
||||
"version": "0.0.2"
|
||||
}
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
"name": "test/path"
|
||||
"name": "test/path-unversioned"
|
||||
}
|
|
@ -35,7 +35,7 @@ class PathRepositoryTest extends TestCase
|
|||
$repository->getPackages();
|
||||
|
||||
$this->assertEquals(1, $repository->count());
|
||||
$this->assertTrue($repository->hasPackage($this->getPackage('test/path', '0.0.2')));
|
||||
$this->assertTrue($repository->hasPackage($this->getPackage('test/path-versioned', '0.0.2')));
|
||||
}
|
||||
|
||||
public function testLoadPackageFromFileSystemWithoutVersion()
|
||||
|
@ -54,9 +54,31 @@ class PathRepositoryTest extends TestCase
|
|||
$this->assertEquals(1, $repository->count());
|
||||
|
||||
$package = $packages[0];
|
||||
$this->assertEquals('test/path', $package->getName());
|
||||
$this->assertEquals('test/path-unversioned', $package->getName());
|
||||
|
||||
$packageVersion = $package->getVersion();
|
||||
$this->assertTrue(!empty($packageVersion));
|
||||
}
|
||||
|
||||
public function testLoadPackageFromFileSystemWithWildcard()
|
||||
{
|
||||
$ioInterface = $this->getMockBuilder('Composer\IO\IOInterface')
|
||||
->getMock();
|
||||
|
||||
$config = new \Composer\Config();
|
||||
$loader = new ArrayLoader(new VersionParser());
|
||||
$versionGuesser = null;
|
||||
|
||||
$repositoryUrl = implode(DIRECTORY_SEPARATOR, array(__DIR__, 'Fixtures', 'path', '*'));
|
||||
$repository = new PathRepository(array('url' => $repositoryUrl), $ioInterface, $config, $loader);
|
||||
$packages = $repository->getPackages();
|
||||
|
||||
$this->assertEquals(2, $repository->count());
|
||||
|
||||
$package = $packages[0];
|
||||
$this->assertEquals('test/path-versioned', $package->getName());
|
||||
|
||||
$package = $packages[1];
|
||||
$this->assertEquals('test/path-unversioned', $package->getName());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue