Browse Source

Fix dry run skipping some critical steps

Jordi Boggiano 12 years ago
parent
commit
63d7abf196
1 changed files with 41 additions and 38 deletions
  1. 41 38
      src/Composer/Installer.php

+ 41 - 38
src/Composer/Installer.php

@@ -130,6 +130,7 @@ class Installer
     {
         if ($this->dryRun) {
             $this->verbose = true;
+            $this->runScripts = false;
         }
 
         if ($this->preferSource) {
@@ -151,7 +152,7 @@ class Installer
 
         $aliases = $this->aliasPackages();
 
-        if (!$this->dryRun && $this->runScripts) {
+        if ($this->runScripts) {
             // dispatch pre event
             $eventName = $this->update ? ScriptEvents::PRE_UPDATE_CMD : ScriptEvents::PRE_INSTALL_CMD;
             $this->eventDispatcher->dispatchCommandEvent($eventName);
@@ -365,52 +366,54 @@ class Installer
                 }
             }
 
-            if (!$this->dryRun) {
-                $event = 'Composer\Script\ScriptEvents::PRE_PACKAGE_'.strtoupper($operation->getJobType());
-                if (defined($event) && $this->runScripts) {
-                    $this->eventDispatcher->dispatchPackageEvent(constant($event), $operation);
-                }
+            $event = 'Composer\Script\ScriptEvents::PRE_PACKAGE_'.strtoupper($operation->getJobType());
+            if (defined($event) && $this->runScripts) {
+                $this->eventDispatcher->dispatchPackageEvent(constant($event), $operation);
+            }
 
-                // if installing from lock, restore dev packages' references to their locked state
-                if ($installFromLock) {
-                    $package = null;
-                    if ('update' === $operation->getJobType()) {
-                        $package = $operation->getTargetPackage();
-                    } elseif ('install' === $operation->getJobType()) {
-                        $package = $operation->getPackage();
-                    }
-                    if ($package && $package->isDev()) {
-                        $lockData = $this->locker->getLockData();
-                        foreach ($lockData['packages'] as $lockedPackage) {
-                            if (!empty($lockedPackage['source-reference']) && strtolower($lockedPackage['package']) === $package->getName()) {
-                                $package->setSourceReference($lockedPackage['source-reference']);
-                                break;
-                            }
+            // if installing from lock, restore dev packages' references to their locked state
+            if ($installFromLock) {
+                $package = null;
+                if ('update' === $operation->getJobType()) {
+                    $package = $operation->getTargetPackage();
+                } elseif ('install' === $operation->getJobType()) {
+                    $package = $operation->getPackage();
+                }
+                if ($package && $package->isDev()) {
+                    $lockData = $this->locker->getLockData();
+                    foreach ($lockData['packages'] as $lockedPackage) {
+                        if (!empty($lockedPackage['source-reference']) && strtolower($lockedPackage['package']) === $package->getName()) {
+                            $package->setSourceReference($lockedPackage['source-reference']);
+                            break;
                         }
                     }
-                } else {
-                    // not installing from lock, force dev packages' references if they're in root package refs
-                    $package = null;
-                    if ('update' === $operation->getJobType()) {
-                        $package = $operation->getTargetPackage();
-                    } elseif ('install' === $operation->getJobType()) {
-                        $package = $operation->getPackage();
-                    }
-                    if ($package && $package->isDev()) {
-                        $references = $this->package->getReferences();
-                        if (isset($references[$package->getName()])) {
-                            $package->setSourceReference($references[$package->getName()]);
-                        }
+                }
+            } else {
+                // not installing from lock, force dev packages' references if they're in root package refs
+                $package = null;
+                if ('update' === $operation->getJobType()) {
+                    $package = $operation->getTargetPackage();
+                } elseif ('install' === $operation->getJobType()) {
+                    $package = $operation->getPackage();
+                }
+                if ($package && $package->isDev()) {
+                    $references = $this->package->getReferences();
+                    if (isset($references[$package->getName()])) {
+                        $package->setSourceReference($references[$package->getName()]);
                     }
                 }
+            }
 
+            if (!$this->dryRun) {
                 $this->installationManager->execute($localRepo, $operation);
+            }
 
-                $event = 'Composer\Script\ScriptEvents::POST_PACKAGE_'.strtoupper($operation->getJobType());
-                if (defined($event) && $this->runScripts) {
-                    $this->eventDispatcher->dispatchPackageEvent(constant($event), $operation);
-                }
+            $event = 'Composer\Script\ScriptEvents::POST_PACKAGE_'.strtoupper($operation->getJobType());
+            if (defined($event) && $this->runScripts) {
+                $this->eventDispatcher->dispatchPackageEvent(constant($event), $operation);
+            }
 
+            if (!$this->dryRun) {
                 $localRepo->write();
             }
         }