Browse Source

[ZipDownloader] If `unzip` command failed, give cleaner error.

Joseph Bielawski 13 years ago
parent
commit
9631d7c3fd
1 changed files with 7 additions and 3 deletions
  1. 7 3
      src/Composer/Downloader/ZipDownloader.php

+ 7 - 3
src/Composer/Downloader/ZipDownloader.php

@@ -33,15 +33,19 @@ class ZipDownloader extends ArchiveDownloader
     protected function extract($file, $path)
     {
         if (!class_exists('ZipArchive')) {
+            $error = 'You need the zip extension enabled to use the ZipDownloader';
+
             // try to use unzip on *nix
             if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
-                $result = $this->process->execute('unzip '.escapeshellarg($file).' -d '.escapeshellarg($path), $ignoredOutput);
-                if (0 == $result) {
+                $command = 'unzip '.escapeshellarg($file).' -d '.escapeshellarg($path);
+                if (0 === $this->process->execute($command, $ignoredOutput)) {
                     return;
                 }
+
+                $error = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput();
             }
 
-            throw new \RuntimeException('You need the zip extension enabled to use the ZipDownloader');
+            throw new \RuntimeException($error);
         }
 
         $zipArchive = new ZipArchive();