-
-
Save nhp/ee37257903a3eae55d206d280bc7f2e1 to your computer and use it in GitHub Desktop.
Hackathon Extension Point for Setup App
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<type name="wrapperList"> | |
<arguments> | |
<argument name="wrappers" xsi:type="array"> | |
<item xsi:type="string">UpgradeCommand</item> | |
<item xsi:type="array"> | |
<item xsi:type="array"> | |
<item xsi:type="object">Wrapper</item> | |
</item> | |
</item> | |
</argument> | |
</arguments> | |
</type> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Magento\Framework\Console; | |
use Symfony\Component\Console\Input\InputInterface; | |
use Symfony\Component\Console\Output\OutputInterface; | |
use Symfony\Component\Console\Output\ConsoleOutput; | |
use Symfony\Component\Console\Input\ArgvInput; | |
use Symfony\Component\Console\Application as SymfonyApplication; | |
use Magento\Framework\App\Bootstrap; | |
use Magento\Framework\Filesystem\Driver\File; | |
use Magento\Framework\Shell\ComplexParameter; | |
use Magento\Setup\Console\CompilerPreparation; | |
/** | |
* Magento 2 CLI Application. This is the hood for all command line tools supported by Magento | |
* | |
* {@inheritdoc} | |
* @SuppressWarnings(PHPMD.CouplingBetweenObjects) | |
*/ | |
class Cli extends SymfonyApplication | |
{ | |
/** | |
* Gets application commands | |
* | |
* @return array | |
*/ | |
protected function getApplicationCommands() | |
{ | |
$commands = []; | |
try { | |
$bootstrapParam = new ComplexParameter(self::INPUT_KEY_BOOTSTRAP); | |
$params = $bootstrapParam->mergeFromArgv($_SERVER, $_SERVER); | |
$params[Bootstrap::PARAM_REQUIRE_MAINTENANCE] = null; | |
$bootstrap = Bootstrap::create(BP, $params); | |
$objectManager = $bootstrap->getObjectManager(); | |
/** @var \Magento\Setup\Model\ObjectManagerProvider $omProvider */ | |
$omProvider = $this->serviceManager->get('Magento\Setup\Model\ObjectManagerProvider'); | |
$omProvider->setObjectManager($objectManager); | |
if (class_exists('Magento\Setup\Console\CommandList')) { | |
$setupCommandList = new \Magento\Setup\Console\CommandList($this->serviceManager); | |
$commands = array_merge($commands, $setupCommandList->getCommands()); | |
} | |
if ($objectManager->get('Magento\Framework\App\DeploymentConfig')->isAvailable()) { | |
/** @var \Magento\Framework\Console\CommandList $commandList */ | |
$commandList = $objectManager->create('Magento\Framework\Console\CommandList'); | |
$commands = array_merge($commands, $commandList->getCommands()); | |
} | |
$commands = array_merge($commands, $this->getVendorCommands($objectManager)); | |
$commands = $objectManager->create('wrapperList')->decorate($commands); | |
} catch (\Exception $e) { | |
$this->initException = $e; | |
} | |
return $commands; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class WrapperList | |
{ | |
public function decorate($commands) | |
{ | |
foreach($commands as $key => $command) { | |
$class = get_class($command); | |
if (isset($this->decorators[$class])) { | |
foreach ($this->decorators[$class] as $decorator) { | |
$commands[$key] = $this->decoratorFactory->care($decorator, ['subject' => $commands[$key]]); | |
} | |
} | |
} | |
return $commands; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment