97 lines
2.4 KiB
PHP
97 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace Doctrine\Bundle\DoctrineBundle\Command\Proxy;
|
|
|
|
use RuntimeException;
|
|
use Symfony\Component\Console\Command\Command;
|
|
use Symfony\Component\Console\Input\InputInterface;
|
|
use Symfony\Component\Console\Input\InputOption;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
|
|
/**
|
|
* Command Delegate.
|
|
*/
|
|
abstract class DelegateCommand extends Command
|
|
{
|
|
/** @var Command */
|
|
protected $command;
|
|
|
|
/**
|
|
* @return Command
|
|
*/
|
|
abstract protected function createCommand();
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
protected function getMinimalVersion()
|
|
{
|
|
return '2.3.0-DEV';
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
public function isEnabled()
|
|
{
|
|
return $this->isVersionCompatible();
|
|
}
|
|
|
|
/**
|
|
* @param string $entityManagerName
|
|
*
|
|
* @return Command
|
|
*/
|
|
protected function wrapCommand($entityManagerName)
|
|
{
|
|
if (! $this->isVersionCompatible()) {
|
|
throw new RuntimeException(sprintf('"%s" requires doctrine-orm "%s" or newer', $this->getName(), $this->getMinimalVersion()));
|
|
}
|
|
|
|
DoctrineCommandHelper::setApplicationEntityManager($this->getApplication(), $entityManagerName);
|
|
$this->command->setApplication($this->getApplication());
|
|
|
|
return $this->command;
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
protected function configure()
|
|
{
|
|
if ($this->isVersionCompatible()) {
|
|
$this->command = $this->createCommand();
|
|
|
|
$this->setHelp($this->command->getHelp());
|
|
$this->setDefinition($this->command->getDefinition());
|
|
$this->setDescription($this->command->getDescription());
|
|
}
|
|
|
|
$this->addOption('em', null, InputOption::VALUE_OPTIONAL, 'The entity manager to use for this command');
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
protected function execute(InputInterface $input, OutputInterface $output)
|
|
{
|
|
return $this->wrapCommand($input->getOption('em'))->execute($input, $output);
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
protected function interact(InputInterface $input, OutputInterface $output)
|
|
{
|
|
$this->wrapCommand($input->getOption('em'))->interact($input, $output);
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
protected function initialize(InputInterface $input, OutputInterface $output)
|
|
{
|
|
$this->wrapCommand($input->getOption('em'))->initialize($input, $output);
|
|
}
|
|
}
|