|
|
|
@ -78,7 +78,12 @@ class ArchiveManager
|
|
|
|
|
*/
|
|
|
|
|
public function getPackageFilename(PackageInterface $package)
|
|
|
|
|
{
|
|
|
|
|
$nameParts = array(preg_replace('#[^a-z0-9-_]#i', '-', $package->getName()));
|
|
|
|
|
if ($package->getArchiveName()) {
|
|
|
|
|
$baseName = $package->getArchiveName();
|
|
|
|
|
} else {
|
|
|
|
|
$baseName = preg_replace('#[^a-z0-9-_]#i', '-', $package->getName());
|
|
|
|
|
}
|
|
|
|
|
$nameParts = array($baseName);
|
|
|
|
|
|
|
|
|
|
if (preg_match('{^[a-f0-9]{40}$}', $package->getDistReference())) {
|
|
|
|
|
array_push($nameParts, $package->getDistReference(), $package->getDistType());
|
|
|
|
@ -131,20 +136,6 @@ class ArchiveManager
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$filesystem = new Filesystem();
|
|
|
|
|
if (null === $fileName) {
|
|
|
|
|
$packageName = $this->getPackageFilename($package);
|
|
|
|
|
} else {
|
|
|
|
|
$packageName = $fileName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Archive filename
|
|
|
|
|
$filesystem->ensureDirectoryExists($targetDir);
|
|
|
|
|
$target = realpath($targetDir).'/'.$packageName.'.'.$format;
|
|
|
|
|
$filesystem->ensureDirectoryExists(dirname($target));
|
|
|
|
|
|
|
|
|
|
if (!$this->overwriteFiles && file_exists($target)) {
|
|
|
|
|
return $target;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($package instanceof RootPackageInterface) {
|
|
|
|
|
$sourcePath = realpath('.');
|
|
|
|
@ -167,12 +158,30 @@ class ArchiveManager
|
|
|
|
|
if (file_exists($composerJsonPath = $sourcePath.'/composer.json')) {
|
|
|
|
|
$jsonFile = new JsonFile($composerJsonPath);
|
|
|
|
|
$jsonData = $jsonFile->read();
|
|
|
|
|
if (!empty($jsonData['archive']['name'])) {
|
|
|
|
|
$package->setArchiveName($jsonData['archive']['name']);
|
|
|
|
|
}
|
|
|
|
|
if (!empty($jsonData['archive']['exclude'])) {
|
|
|
|
|
$package->setArchiveExcludes($jsonData['archive']['exclude']);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (null === $fileName) {
|
|
|
|
|
$packageName = $this->getPackageFilename($package);
|
|
|
|
|
} else {
|
|
|
|
|
$packageName = $fileName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Archive filename
|
|
|
|
|
$filesystem->ensureDirectoryExists($targetDir);
|
|
|
|
|
$target = realpath($targetDir).'/'.$packageName.'.'.$format;
|
|
|
|
|
$filesystem->ensureDirectoryExists(dirname($target));
|
|
|
|
|
|
|
|
|
|
if (!$this->overwriteFiles && file_exists($target)) {
|
|
|
|
|
return $target;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Create the archive
|
|
|
|
|
$tempTarget = sys_get_temp_dir().'/composer_archive'.uniqid().'.'.$format;
|
|
|
|
|
$filesystem->ensureDirectoryExists(dirname($tempTarget));
|
|
|
|
|