1
0
Fork 0

updated script events

added new POST_ROOT_PACKGE_INSTALL and POST_CREATE_PROjECT event, triggered only in create-project
changed create-package parameter 'package' to be optional, command now looks in working directory for composer project if no param is given
pull/1945/head
Tobias Munk 2013-05-29 00:30:18 +02:00
parent b38db73611
commit 0ac5165f04
2 changed files with 38 additions and 1 deletions

View File

@ -26,6 +26,7 @@ use Composer\Repository\ComposerRepository;
use Composer\Repository\CompositeRepository;
use Composer\Repository\FilesystemRepository;
use Composer\Repository\InstalledFilesystemRepository;
use Composer\Script\ScriptEvents;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
@ -51,7 +52,7 @@ class CreateProjectCommand extends Command
->setName('create-project')
->setDescription('Create new project from a package into given directory.')
->setDefinition(array(
new InputArgument('package', InputArgument::REQUIRED, 'Package name to be installed'),
new InputArgument('package', InputArgument::OPTIONAL, 'Package name to be installed', 'local'),
new InputArgument('directory', InputArgument::OPTIONAL, 'Directory where the files should be created'),
new InputArgument('version', InputArgument::OPTIONAL, 'Version, will defaults to latest'),
new InputOption('stability', 's', InputOption::VALUE_REQUIRED, 'Minimum-stability allowed (unless a version is specified).', 'stable'),
@ -133,6 +134,11 @@ EOT
public function installProject(IOInterface $io, $config, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repositoryUrl = null, $disableCustomInstallers = false, $noScripts = false, $keepVcs = false, $noProgress = false)
{
if ($packageName === 'local') {
$installedFromVcs = false;
goto installDependencies;
}
$stability = strtolower($stability);
if ($stability === 'rc') {
$stability = 'RC';
@ -219,6 +225,12 @@ EOT
// clean up memory
unset($dm, $im, $config, $projectInstaller, $sourceRepo, $package);
installDependencies:
if ($noScripts === false) {
// dispatch event
$this->getComposer()->getEventDispatcher()->dispatchCommandEvent(ScriptEvents::POST_ROOT_PACKAGE_INSTALL, $installDevPackages);
}
// install dependencies of the created project
$composer = Factory::create($io);
$installer = Installer::create($io, $composer);
@ -236,6 +248,11 @@ EOT
return 1;
}
if ($noScripts === false) {
// dispatch event
$this->getComposer()->getEventDispatcher()->dispatchCommandEvent(ScriptEvents::POST_CREATE_PROJECT, $installDevPackages);
}
$hasVcs = $installedFromVcs;
if (!$keepVcs && $installedFromVcs
&& (

View File

@ -127,4 +127,24 @@ class ScriptEvents
* @var string
*/
const POST_AUTOLOAD_DUMP = 'post-autoload-dump';
/**
* The POST_ROOT_PACKAGE_INSTALL event occurs after the root package has been installed.
*
* The event listener method receives a Composer\Script\PackageEvent instance.
*
* @var string
*/
const POST_ROOT_PACKAGE_INSTALL = 'post-root-package-install';
/**
* The POST_CREATE_PROJECT event occurs after the create-project command has been executed.
* Note: Event occurs after POST_INSTALL_CMD
*
* The event listener method receives a Composer\Script\PackageEvent instance.
*
* @var string
*/
const POST_CREATE_PROJECT = 'post-create-project';
}