From cc8b33117a89bb1feced40f434549ff2f2029790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20J=C4=99drzejewski?= Date: Mon, 16 Apr 2012 19:45:06 +0200 Subject: [PATCH] add --skip-scripts option to install/update commands. --- src/Composer/Command/InstallCommand.php | 2 ++ src/Composer/Command/UpdateCommand.php | 2 ++ src/Composer/Installer.php | 26 ++++++++++++++++++++----- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/Composer/Command/InstallCommand.php b/src/Composer/Command/InstallCommand.php index bb6c636b6..bbe4f0631 100644 --- a/src/Composer/Command/InstallCommand.php +++ b/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(<<install 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; diff --git a/src/Composer/Command/UpdateCommand.php b/src/Composer/Command/UpdateCommand.php index ffc848d87..7f458bf11 100644 --- a/src/Composer/Command/UpdateCommand.php +++ b/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(<<update 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) ; diff --git a/src/Composer/Installer.php b/src/Composer/Installer.php index 0eed0050a..5d4cc8419 100644 --- a/src/Composer/Installer.php +++ b/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 *