1
0
Fork 0

added support for nested location of composer.json files within artifacts

pull/1728/head
Serge Smertin 2013-03-31 20:51:37 +02:00
parent 83bb38de56
commit f25bfe09c5
2 changed files with 15 additions and 3 deletions

View File

@ -69,12 +69,23 @@ class ArtifactRepository extends ArrayRepository
private function getComposerInformation(\SplFileInfo $file)
{
$composerFile = "zip://{$file->getPathname()}#composer.json";
$json = @file_get_contents($composerFile);
if (!$json) {
$zip = new \ZipArchive();
$zip->open($file->getPathname());
if (0 == $zip->numFiles) {
return false;
}
$foundFileIndex = $zip->locateName('composer.json', \ZipArchive::FL_NODIR);
if (false === $foundFileIndex) {
return false;
}
$configurationFileName = $zip->getNameIndex($foundFileIndex);
$composerFile = "zip://{$file->getPathname()}#$configurationFileName";
$json = file_get_contents($composerFile);
$package = JsonFile::parseJson($json, $composerFile);
$package['dist'] = array(
'type' => 'zip',

View File

@ -22,6 +22,7 @@ class ArtifactRepositoryTest extends TestCase
public function testExtractsConfigsFromZipArchives()
{
$expectedPackages = array(
'composer/composer-1.0.0-alpha6',
'vendor0/package0-0.0.1',
'vendor1/package2-4.3.2',
);