Bladeren bron

Rethrow download exceptions when no options left & clean up code

Nils Adermann 11 jaren geleden
bovenliggende
commit
31fd6c233c
1 gewijzigde bestanden met toevoegingen van 11 en 11 verwijderingen
  1. 11 11
      src/Composer/Downloader/DownloadManager.php

+ 11 - 11
src/Composer/Downloader/DownloadManager.php

@@ -172,28 +172,25 @@ class DownloadManager
         $sourceType   = $package->getSourceType();
         $distType     = $package->getDistType();
 
-        $wantDist = !$package->isDev() || $this->preferDist || !$sourceType;
-        $wantSource = $preferSource && $sourceType;
-
-        $types = array();
+        $sources = array();
         if ($sourceType) {
-            $types[] = 'source';
+            $sources[] = 'source';
         }
         if ($distType) {
-            $types[] = 'dist';
+            $sources[] = 'dist';
         }
 
-        if (empty($types)) {
+        if (empty($sources)) {
             throw new \InvalidArgumentException('Package '.$package.' must have a source or dist specified');
         }
 
-        if ($wantDist && !$wantSource) {
-            $types = array_reverse($types);
+        if ((!$package->isDev() || $this->preferDist) && !$preferSource) {
+            $sources = array_reverse($sources);
         }
 
         $this->filesystem->ensureDirectoryExists($targetDir);
 
-        foreach ($types as $source) {
+        foreach ($sources as $i => $source) {
             $package->setInstallationSource($source);
             try {
                 $downloader = $this->getDownloaderForInstalledPackage($package);
@@ -202,13 +199,16 @@ class DownloadManager
                 }
                 break;
             } catch (\RuntimeException $e) {
+                if ($i == count($sources) - 1) {
+                    throw $e;
+                }
+
                 $this->io->write(
                     '<warning>Caught an exception while trying to download '.
                     $package->getPrettyString().
                     ': '.
                     $e->getMessage().'</warning>'
                 );
-                continue;
             }
         }
     }