diff --git a/src/Composer/Downloader/ArchiveDownloader.php b/src/Composer/Downloader/ArchiveDownloader.php index 1f37ec974..71fd38ccd 100644 --- a/src/Composer/Downloader/ArchiveDownloader.php +++ b/src/Composer/Downloader/ArchiveDownloader.php @@ -49,12 +49,11 @@ abstract class ArchiveDownloader extends FileDownloader unlink($fileName); - // get file list - $contentDir = $this->listFiles($temporaryDir); + $contentDir = $this->getFolderContent($temporaryDir); // only one dir in the archive, extract its contents out of it - if (1 === count($contentDir) && !is_file($contentDir[0])) { - $contentDir = $this->listFiles($contentDir[0]); + if (1 === count($contentDir) && is_dir($contentDir[0])) { + $contentDir = $this->getFolderContent($contentDir[0]); } // move files back out of the temp dir @@ -128,9 +127,11 @@ abstract class ArchiveDownloader extends FileDownloader abstract protected function extract($file, $path); /** - * Returns the list of files in a directory including dotfiles + * Returns the folder content, excluding dotfiles + * + * @param string $dir Directory */ - private function listFiles($dir) + private function getFolderContent($dir) { $files = array_merge($this->filesystem->realpathGlob($dir . '/.*'), $this->filesystem->realpathGlob($dir . '/*'));