. */ /* */ /*************************************************************************************/ namespace Thelia\Core; use Symfony\Component\Console\Application as BaseApplication; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\HttpKernel\KernelInterface; class Application extends BaseApplication { public $kernel; public function __construct(KernelInterface $kernel) { $this->kernel = $kernel; parent::__construct("Thelia", Thelia::THELIA_VERSION); $this->getDefinition()->addOption(new InputOption('--env', '-e', InputOption::VALUE_REQUIRED, 'The Environment name.', $kernel->getEnvironment())); $this->getDefinition()->addOption(new InputOption('--no-debug', null, InputOption::VALUE_NONE, 'Switches off debug mode.')); } public function getKernel() { return $this->kernel; } public function getContainer() { return $this->kernel->getContainer(); } public function doRun(InputInterface $input, OutputInterface $output) { $this->registerCommands(); return parent::doRun($input, $output); } protected function registerCommands() { $this->kernel->boot(); $container = $this->kernel->getContainer(); foreach ($container->getParameter("command.definition") as $command) { $r = new \ReflectionClass($command); if ($r->isSubclassOf('Symfony\\Component\\Console\\Command\\Command') && !$r->isAbstract()) { $this->add($r->newInstance()); } } } }