Browse Source

Merge remote-tracking branch 'pjedrzejewski/feature/skipping-scripts-execution'

Conflicts:
	src/Composer/Installer.php
Jordi Boggiano 12 years ago
parent
commit
1f2f161508

+ 2 - 0
src/Composer/Command/InstallCommand.php

@@ -33,6 +33,7 @@ class InstallCommand extends Command
                 new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'),
                 new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'),
                 new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables installation of dev-require packages.'),
+                new InputOption('skip-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'),
             ))
             ->setHelp(<<<EOT
 The <info>install</info> command reads the composer.json file from the
@@ -57,6 +58,7 @@ EOT
             ->setVerbose($input->getOption('verbose'))
             ->setPreferSource($input->getOption('prefer-source'))
             ->setDevMode($input->getOption('dev'))
+            ->setRunScripts(!$input->getOption('skip-scripts'))
         ;
 
         return $install->run() ? 0 : 1;

+ 2 - 0
src/Composer/Command/UpdateCommand.php

@@ -31,6 +31,7 @@ class UpdateCommand extends Command
                 new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'),
                 new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'),
                 new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables installation of dev-require packages.'),
+                new InputOption('skip-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'),
             ))
             ->setHelp(<<<EOT
 The <info>update</info> command reads the composer.json file from the
@@ -55,6 +56,7 @@ EOT
             ->setVerbose($input->getOption('verbose'))
             ->setPreferSource($input->getOption('prefer-source'))
             ->setDevMode($input->getOption('dev'))
+            ->setRunScripts(!$input->getOption('skip-scripts'))
             ->setUpdate(true)
         ;
 

+ 21 - 5
src/Composer/Installer.php

@@ -87,6 +87,7 @@ class Installer
     protected $dryRun = false;
     protected $verbose = false;
     protected $update = false;
+    protected $runScripts = true;
 
     /**
      * @var array
@@ -150,7 +151,7 @@ class Installer
 
         $aliases = $this->aliasPackages();
 
-        if (!$this->dryRun) {
+        if (!$this->dryRun && $this->runScripts) {
             // dispatch pre event
             $eventName = $this->update ? ScriptEvents::PRE_UPDATE_CMD : ScriptEvents::PRE_INSTALL_CMD;
             $this->eventDispatcher->dispatchCommandEvent($eventName);
@@ -193,9 +194,11 @@ class Installer
             $localRepos = new CompositeRepository($this->repositoryManager->getLocalRepositories());
             $this->autoloadGenerator->dump($localRepos, $this->package, $this->installationManager, $this->installationManager->getVendorPath() . '/composer', true);
 
-            // dispatch post event
-            $eventName = $this->update ? ScriptEvents::POST_UPDATE_CMD : ScriptEvents::POST_INSTALL_CMD;
-            $this->eventDispatcher->dispatchCommandEvent($eventName);
+            if ($this->runScripts) {
+                // dispatch post event
+                $eventName = $this->update ? ScriptEvents::POST_UPDATE_CMD : ScriptEvents::POST_INSTALL_CMD;
+                $this->eventDispatcher->dispatchCommandEvent($eventName);
+            }
         }
 
         return true;
@@ -518,7 +521,7 @@ class Installer
     /**
      * enables dev packages
      *
-     * @param  boolean   $update
+     * @param  boolean   $devMode
      * @return Installer
      */
     public function setDevMode($devMode = true)
@@ -528,6 +531,19 @@ class Installer
         return $this;
     }
 
+    /**
+     * set whether to run scripts or not
+     *
+     * @param boolean $runScripts
+     * @return Installer
+     */
+    public function setRunScripts($runScripts = true)
+    {
+        $this->runScripts = (boolean) $runScripts;
+
+        return $this;
+    }
+
     /**
      * run in verbose mode
      *