diff --git a/Command/AbstractCommand.php b/Command/AbstractCommand.php index c597b8a..4b9ef76 100644 --- a/Command/AbstractCommand.php +++ b/Command/AbstractCommand.php @@ -60,6 +60,12 @@ abstract class AbstractCommand extends ContainerAwareCommand */ private $alreadyWroteConnection = false; + /** + * + * @var InputInterface + */ + protected $input; + /** * Return the package prefix for a given bundle. * @@ -90,6 +96,8 @@ abstract class AbstractCommand extends ContainerAwareCommand { parent::initialize($input, $output); + $this->input = $input; + $this->checkConfiguration(); if ($input->hasArgument('bundle') && '@' === substr($input->getArgument('bundle'), 0, 1)) { @@ -227,6 +235,13 @@ abstract class AbstractCommand extends ContainerAwareCommand ); } + if ($this->input && $this->input->hasOption('connection') && $this->input->getOption('connection') + && $database['name'] != $this->input->getOption('connection')) { + //we skip this schema because the connection name doesn't match the input value + $filesystem->remove($file); + continue; + } + foreach ($database->table as $table) { if (isset($table['package'])) { $table['package'] = $table['package']; diff --git a/Command/BuildCommand.php b/Command/BuildCommand.php index 0689b5e..9fd62a1 100644 --- a/Command/BuildCommand.php +++ b/Command/BuildCommand.php @@ -14,6 +14,7 @@ use Propel\PropelBundle\Command\AbstractCommand; use Propel\PropelBundle\Command\ModelBuildCommand; use Propel\PropelBundle\Command\SqlBuildCommand; +use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -51,26 +52,31 @@ class BuildCommand extends AbstractCommand protected function execute(InputInterface $input, OutputInterface $output) { if (!$input->getOption('sql')) { - $modelCommand = new ModelBuildCommand(); - $modelCommand->setApplication($this->getApplication()); - $modelCommand->execute($input, $output); + $in = new ArrayInput(array( + 'command' => 'propel:model:build', + '--connection' => $input->getOption('connection') + )); + $modelCommand = $this->getApplication()->find('propel:model:build'); + $res = $modelCommand->run($in, $output); } if (!$input->getOption('classes')) { - $sqlCommand = new SqlBuildCommand(); - $sqlCommand->setApplication($this->getApplication()); - $sqlCommand->execute($input, $output); + $in = new ArrayInput(array( + 'command' => 'propel:build:sql', + '--connection' => $input->getOption('connection'), + )); + $sqlCommand = $this->getApplication()->find('propel:sql:build'); + $sqlCommand->run($in, $output); } if ($input->getOption('insert-sql')) { - $insertCommand = new SqlInsertCommand(); - $insertCommand->setApplication($this->getApplication()); - - // By-pass the '--force' required option - $this->addOption('force', '', InputOption::VALUE_NONE, ''); - $input->setOption('force', true); - - $insertCommand->execute($input, $output); + $in = new ArrayInput(array( + 'command' => 'propel:sql:insert', + '--connection' => $input->getOption('connection'), + '--force' => true, + )); + $insertCommand = $this->getApplication()->find('propel:sql:insert'); + $insertCommand->run($in, $output); } } } diff --git a/Command/MigrationGenerateDiffCommand.php b/Command/MigrationGenerateDiffCommand.php index bd15bfc..6ff16cf 100644 --- a/Command/MigrationGenerateDiffCommand.php +++ b/Command/MigrationGenerateDiffCommand.php @@ -12,6 +12,7 @@ namespace Propel\PropelBundle\Command; use Propel\PropelBundle\Command\AbstractCommand; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** @@ -28,6 +29,7 @@ class MigrationGenerateDiffCommand extends AbstractCommand { $this ->setDescription('Generates SQL diff between the XML schemas and the current database structure') + ->addOption('connection', null, InputOption::VALUE_OPTIONAL, 'Set this parameter to define a connection to use') ->setHelp(<<propel:migration:generate-diff command compares the current database structure and the available schemas. If there is a difference, it creates a migration file. diff --git a/Command/MigrationMigrateCommand.php b/Command/MigrationMigrateCommand.php index b97d9be..9122d48 100644 --- a/Command/MigrationMigrateCommand.php +++ b/Command/MigrationMigrateCommand.php @@ -11,10 +11,9 @@ namespace Propel\PropelBundle\Command; use Propel\PropelBundle\Command\AbstractCommand; -use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Output\Output; /** * MigrationMigrateCommand. diff --git a/Command/ModelBuildCommand.php b/Command/ModelBuildCommand.php index 6a659c2..09550ef 100644 --- a/Command/ModelBuildCommand.php +++ b/Command/ModelBuildCommand.php @@ -13,6 +13,7 @@ namespace Propel\PropelBundle\Command; use Propel\PropelBundle\Command\AbstractCommand; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** @@ -31,6 +32,7 @@ class ModelBuildCommand extends AbstractCommand $this ->setDescription('Build the Propel Object Model classes based on XML schemas') ->addArgument('bundle', InputArgument::OPTIONAL, 'The bundle to generate model classes from') + ->addOption('connection', null, InputOption::VALUE_OPTIONAL, 'Set this parameter to define a connection to use') ->setHelp(<<%command.name% command builds the Propel runtime model classes (ActiveRecord, Query, Peer, and TableMap classes) based on the XML schemas defined in all Bundles. diff --git a/Command/SqlBuildCommand.php b/Command/SqlBuildCommand.php index 525a4f1..3cf04b8 100644 --- a/Command/SqlBuildCommand.php +++ b/Command/SqlBuildCommand.php @@ -11,6 +11,7 @@ namespace Propel\PropelBundle\Command; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\Output; use Symfony\Component\Filesystem\Filesystem; @@ -39,6 +40,7 @@ The %command.name% command builds the SQL table generation code bas php %command.full_name% EOT ) + ->addOption('connection', null, InputOption::VALUE_OPTIONAL, 'Set this parameter to define a connection to use') ->setName('propel:sql:build') ; }