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

main
Serge Smertin 11 years ago
parent 83bb38de56
commit f25bfe09c5

@ -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',

@ -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',
);

Loading…
Cancel
Save