diff --git a/CHANGELOG.md b/CHANGELOG.md index 1368f2eaef..8372c3fbb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ - Add `Link` header in permalink resources HTTP responses. - Global speed improvement on report. - Upload now monitors number of files transmitted. + - Add bin/developer console for developement purpose. * 3.7.12 (2013-05-13) diff --git a/bin/doctrine b/bin/developer similarity index 76% rename from bin/doctrine rename to bin/developer index 83f4511b84..4ba8a54cc3 100755 --- a/bin/doctrine +++ b/bin/developer @@ -9,9 +9,12 @@ * file that was distributed with this source code. */ +use Alchemy\Phrasea\CLI; +use Alchemy\Phrasea\Core\Version; +use Alchemy\Phrasea\Command\Developer\RegenerateSqliteDb; + use Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper; use Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper; -use Alchemy\Phrasea\CLI; // DBAL Commands use Doctrine\DBAL\Tools\Console\Command\RunSqlCommand; use Doctrine\DBAL\Tools\Console\Command\ImportCommand; @@ -34,7 +37,17 @@ use Doctrine\ORM\Tools\Console\Command\ValidateSchemaCommand; require_once __DIR__ . '/../vendor/autoload.php'; try { - $cli = new CLI("Phraseanet Doctrine Console"); + $cli = new CLI(" + ___ ___ _ _ ___ __ __ ___ ___ ___ ____ __ __ __ ___ +( \( _)( )( )( _)( ) / \( ,\( _)( ,) (_ _)/ \ / \( ) / __) + ) ) )) _) \\// ) _) )(__( () )) _/ ) _) ) \ )( ( () )( () ))(__ \__ \ +(___/(___) (__) (___)(____)\__/(_) (___)(_)\_) (__) \__/ \__/(____)(___/ + + Phraseanet Copyright (C) 2004 Alchemy + This program comes with ABSOLUTELY NO WARRANTY. + This is free software, and you are welcome to redistribute it + under certain conditions; type `about:license' for details.\n\n" + . ' Phraseanet Developer Tools ', Version::getName() . ' ' . Version::getNumber()); $helpers = array( 'db' => new ConnectionHelper($cli['EM']->getConnection()), @@ -46,6 +59,8 @@ try { $helperSet->set($helper, $name); } + $cli->command(new RegenerateSqliteDb()); + $cli['console']->addCommands(array( // DBAL Commands new RunSqlCommand(), diff --git a/builder.php b/builder.php index 58ad297548..26170572e1 100755 --- a/builder.php +++ b/builder.php @@ -25,6 +25,11 @@ $finder ->name('.gitmodules') ->name('.gitignore') ->name('check_cs.php') + ->name('bin/behat') + ->name('bin/developer') + ->name('bin/doctrine.php') + ->name('bin/doctrine') + ->name('bin/phpunit') ->name('cleaner.php') ->name('build-env.sh') ->name('phpunit.xml.dist') diff --git a/lib/Alchemy/Phrasea/Command/Developer/RegenerateSqliteDb.php b/lib/Alchemy/Phrasea/Command/Developer/RegenerateSqliteDb.php new file mode 100644 index 0000000000..b7799b1272 --- /dev/null +++ b/lib/Alchemy/Phrasea/Command/Developer/RegenerateSqliteDb.php @@ -0,0 +1,54 @@ +setDescription("Update the sqlite 'tests/db-ref.sqlite' database with current database definition."); + } + + public function doExecute(InputInterface $input, OutputInterface $output) + { + $fs = new Filesystem(); + + $source = __DIR__ . '/../../../../../tests/db-ref.sqlite'; + $target = __DIR__ . '/../../../../../tests/db-ref.sqlite.bkp'; + + $fs->rename($source, $target); + + try { + $dbsParams = $this->container['phraseanet.configuration']->getConnexions(); + $dbParams = $dbsParams['test_connexion']; + + $dbParams['path'] = $source; + + $config = Setup::createYAMLMetadataConfiguration(array(__DIR__ . '/../../../../conf.d/Doctrine'), true); + $em = EntityManager::create($dbParams, $config); + + $metadatas = $em->getMetadataFactory()->getAllMetadata(); + + $schemaTool = new SchemaTool($em); + + $schemaTool->createSchema($metadatas); + } catch (\Exception $e) { + $fs->rename($target, $source); + throw $e; + } + + $fs->remove($target); + + return 0; + } +}