protected function execute(InputInterface $input, OutputInterface $output)
{
/** @var $dispatcher EventDispatcherInterface */
$dispatcher = $this->getContainer()->get('event_dispatcher');
$this->packageName = $input->getArgument('packageName');
$list = $input->getOption('list');
if ($list) {
$table = new Table($output);
$table->setHeaders(array('Package Key', 'Package Name', 'Package Description'));
foreach ($this->packageData as $packageKey => $packageData) {
$table->addRow([$packageKey, $packageData['name'], $packageData['description']]);
}
$table->render();
return;
}
if (!array_key_exists($this->packageName, $this->packageData)) {
$output->writeln('<error>Package not exists!</error>');
return null;
}
/** @var KernelInterface $kernel */
$kernel = $this->getContainer()->get('kernel');
$application = new Application($kernel);
$application->setAutoExit(false);
$output->writeln('<info>' . $this->packageData[$this->packageName]['description'] . '</info>');
$this->composerUpdate($output, $kernel);
$this->schemaUpdate($output, $kernel);
$this->asseticDump($output, $kernel);
$event = new CoreEvent(['bundleName' => $this->packageName]);
$dispatcher->dispatch(CoreEvents::OJS_INSTALL_3PARTY, $event);
}