Ver Fonte

Use a saner file name for package archives

Nils Adermann há 12 anos atrás
pai
commit
33828b38df

+ 3 - 2
src/Composer/Package/Archiver/ArchiveManager.php

@@ -75,12 +75,13 @@ class ArchiveManager
 
         // Directory used to download the sources
         $filesystem = new Filesystem();
-        $packageName = $package->getUniqueName();
+        $packageName = preg_replace('#[^a-z0-9-_.]#i', '-', $package->getPrettyString());
         $sourcePath = sys_get_temp_dir().'/composer_archiver/'.$packageName;
         $filesystem->ensureDirectoryExists($sourcePath);
 
         // Archive filename
-        $target = $targetDir.'/'.$packageName.'.'.$format;
+        $filesystem->ensureDirectoryExists($targetDir);
+        $target = realpath($targetDir).'/'.$packageName.'.'.$format;
         $filesystem->ensureDirectoryExists(dirname($target));
 
         // Download sources

+ 1 - 1
tests/Composer/Test/Package/Archiver/ArchiveManagerTest.php

@@ -63,7 +63,7 @@ class ArchiveManagerTest extends ArchiverTest
 
     protected function getTargetName(PackageInterface $package, $format)
     {
-        $packageName = $package->getUniqueName();
+        $packageName = preg_replace('#[^a-z0-9-_.]#i', '-', $package->getPrettyString());
         $target = $this->targetDir.'/'.$packageName.'.'.$format;
 
         return $target;