Browse Source

Merge remote-tracking branch 'tot-ra/patch-2'

Conflicts:
	src/Composer/Downloader/ArchiveDownloader.php
Jordi Boggiano 12 years ago
parent
commit
ebc0f8884f
1 changed files with 14 additions and 9 deletions
  1. 14 9
      src/Composer/Downloader/ArchiveDownloader.php

+ 14 - 9
src/Composer/Downloader/ArchiveDownloader.php

@@ -47,18 +47,23 @@ abstract class ArchiveDownloader extends FileDownloader
             if (1 === count($contentDir)) {
                 $contentDir = $contentDir[0];
 
-                // Rename the content directory to avoid error when moving up
-                // a child folder with the same name
-                $temporaryName = md5(time().rand());
-                $this->filesystem->rename($contentDir, $temporaryName);
-                $contentDir = $temporaryName;
+                if (is_file($contentDir)) {
+                    $this->filesystem->rename($contentDir, $path . '/' . basename($contentDir));
+                } else {
+                    // Rename the content directory to avoid error when moving up
+                    // a child folder with the same name
+                    $temporaryName = md5(time().rand());
+                    $this->filesystem->rename($contentDir, $temporaryName);
+                    $contentDir = $temporaryName;
 
-                foreach (array_merge(glob($contentDir . '/.*'), glob($contentDir . '/*')) as $file) {
-                    if (trim(basename($file), '.')) {
-                        $this->filesystem->rename($file, $path . '/' . basename($file));
+                    foreach (array_merge(glob($contentDir . '/.*'), glob($contentDir . '/*')) as $file) {
+                        if (trim(basename($file), '.')) {
+                            $this->filesystem->rename($file, $path . '/' . basename($file));
+                        }
                     }
+
+                    rmdir($contentDir);
                 }
-                rmdir($contentDir);
             }
         } catch (\Exception $e) {
             // clean up