Pārlūkot izejas kodu

add --skip-scripts option to install/update commands.

Paweł Jędrzejewski 13 gadi atpakaļ
vecāks
revīzija
cc8b33117a

+ 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 defines 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'))
+            ->setSkipScripts($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 defines 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'))
+            ->setSkipScripts($input->getOption('skip-scripts'))
             ->setUpdate(true)
         ;
 

+ 21 - 5
src/Composer/Installer.php

@@ -88,6 +88,7 @@ class Installer
     protected $dryRun = false;
     protected $verbose = false;
     protected $update = false;
+    protected $skipScripts = false;
 
     /**
      * @var array
@@ -151,7 +152,7 @@ class Installer
 
         $aliases = $this->aliasPackages();
 
-        if (!$this->dryRun) {
+        if (!$this->dryRun && !$this->skipScripts) {
             // dispatch pre event
             $eventName = $this->update ? ScriptEvents::PRE_UPDATE_CMD : ScriptEvents::PRE_INSTALL_CMD;
             $this->eventDispatcher->dispatchCommandEvent($eventName);
@@ -194,9 +195,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->skipScripts) {
+                // dispatch post event
+                $eventName = $this->update ? ScriptEvents::POST_UPDATE_CMD : ScriptEvents::POST_INSTALL_CMD;
+                $this->eventDispatcher->dispatchCommandEvent($eventName);
+            }
         }
 
         return true;
@@ -496,7 +499,7 @@ class Installer
     /**
      * enables dev packages
      *
-     * @param boolean $update
+     * @param boolean $devMode
      * @return Installer
      */
     public function setDevMode($devMode = true)
@@ -506,6 +509,19 @@ class Installer
         return $this;
     }
 
+    /**
+     * skips scripts execution
+     *
+     * @param boolean $skipScripts
+     * @return Installer
+     */
+    public function setSkipScripts($skipScripts = true)
+    {
+        $this->skipScripts = (boolean) $skipScripts;
+
+        return $this;
+    }
+
     /**
      * run in verbose mode
      *