Мой composer.json
содержит следующее объявление:
"post-install-cmd": [ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" ],
Я хочу запустить пользовательскую консольную команду, которая у меня есть в src/MyBundle/Command/MyCommand.php
. Как добавить это в скрипты для работы в композиторе?
Вы можете увидеть, как работает перенос postinstall для Sensio DistributionBundle.
Например, так вы можете вызвать команду Hello World
пакета Acme Demo:
ScriptHandler
<?php namespace Acme\DemoBundle\Composer; use Composer\Script\CommandEvent; class ScriptHandler extends \Sensio\Bundle\DistributionBundle\Composer\ScriptHandler { /** * Call the demo command of the Acme Demo Bundle. * * @param $event CommandEvent A instance */ public static function helloWorld(CommandEvent $event) { $options = self::getOptions($event); $consoleDir = self::getConsoleDir($event, 'hello world'); if (null === $consoleDir) { return; } // $extraParam = ''; // if (!$options['who']) { // $extraParam = ' --who'; // } static::executeCommand($event, $consoleDir, 'acme:hello', $options['process-timeout']); } }
Вы можете управлять дополнительным параметром в самом json-файле.
composer.json
"post-install-cmd": [ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles", "Acme\\DemoBundle\\Composer\\ScriptHandler::helloWorld" ],
проверенный
Я расширяю класс ScriptHandler пакета распространения sensio версии:
sensio/distribution-bundle (v3.0.18)
надеюсь эта помощь