11<?php
22
3+ declare (strict_types=1 );
34
45namespace Doctrine \Bundle \MigrationsBundle \Command ;
56
67use Doctrine \Bundle \DoctrineBundle \Command \DoctrineCommand as BaseCommand ;
7- use Doctrine \DBAL \Migrations \Configuration \AbstractFileConfiguration ;
8- use Doctrine \DBAL \Migrations \Configuration \Configuration ;
8+ use Doctrine \Migrations \Configuration \AbstractFileConfiguration ;
9+ use Doctrine \Migrations \Configuration \Configuration ;
10+ use Doctrine \Migrations \Version \Version ;
11+ use ErrorException ;
912use Symfony \Component \DependencyInjection \ContainerAwareInterface ;
1013use Symfony \Component \DependencyInjection \ContainerInterface ;
1114use Symfony \Component \DependencyInjection \Exception \InvalidArgumentException ;
15+ use function error_get_last ;
16+ use function is_dir ;
17+ use function method_exists ;
18+ use function mkdir ;
19+ use function preg_match ;
20+ use function sprintf ;
21+ use function str_replace ;
1222
1323/**
1424 * Base class for Doctrine console commands to extend from.
15- *
16- * @author Fabien Potencier <[email protected] > 1725 */
1826abstract class DoctrineCommand extends BaseCommand
1927{
20- public static function configureMigrations (ContainerInterface $ container , Configuration $ configuration )
28+ public static function configureMigrations (ContainerInterface $ container , Configuration $ configuration ) : void
2129 {
22- if (!$ configuration ->getMigrationsDirectory ()) {
30+ $ dir = $ configuration ->getMigrationsDirectory ();
31+
32+ if (empty ($ dir )) {
2333 $ dir = $ container ->getParameter ('doctrine_migrations.dir_name ' );
24- if (!is_dir ($ dir ) && !@mkdir ($ dir , 0777 , true ) && !is_dir ($ dir )) {
34+
35+ if (! is_dir ($ dir ) && ! @mkdir ($ dir , 0777 , true ) && ! is_dir ($ dir )) {
2536 $ error = error_get_last ();
26- throw new \ErrorException ($ error ['message ' ]);
37+
38+ throw new ErrorException (sprintf (
39+ 'Failed to create directory "%s" with message "%s" ' ,
40+ $ dir ,
41+ $ error ['message ' ]
42+ ));
2743 }
44+
2845 $ configuration ->setMigrationsDirectory ($ dir );
2946 } else {
30- $ dir = $ configuration ->getMigrationsDirectory ();
3147 // class Kernel has method getKernelParameters with some of the important path parameters
32- $ pathPlaceholderArray = array ('kernel.root_dir ' , 'kernel.cache_dir ' , 'kernel.logs_dir ' );
48+ $ pathPlaceholderArray = ['kernel.root_dir ' , 'kernel.cache_dir ' , 'kernel.logs_dir ' ];
49+
3350 foreach ($ pathPlaceholderArray as $ pathPlaceholder ) {
34- if ($ container ->hasParameter ($ pathPlaceholder ) && preg_match ('/\% ' . $ pathPlaceholder. '\%/ ' , $ dir )) {
35- $ dir = str_replace ( ' % ' . $ pathPlaceholder . ' % ' , $ container -> getParameter ( $ pathPlaceholder ), $ dir ) ;
51+ if (! $ container ->hasParameter ($ pathPlaceholder ) || ! preg_match ('/\% ' . $ pathPlaceholder . '\%/ ' , $ dir )) {
52+ continue ;
3653 }
54+
55+ $ dir = str_replace ('% ' . $ pathPlaceholder . '% ' , $ container ->getParameter ($ pathPlaceholder ), $ dir );
3756 }
38- if (!is_dir ($ dir ) && !@mkdir ($ dir , 0777 , true ) && !is_dir ($ dir )) {
57+
58+ if (! is_dir ($ dir ) && ! @mkdir ($ dir , 0777 , true ) && ! is_dir ($ dir )) {
3959 $ error = error_get_last ();
40- throw new \ErrorException ($ error ['message ' ]);
60+
61+ throw new ErrorException (sprintf (
62+ 'Failed to create directory "%s" with message "%s" ' ,
63+ $ dir ,
64+ $ error ['message ' ]
65+ ));
4166 }
67+
4268 $ configuration ->setMigrationsDirectory ($ dir );
4369 }
44- if (!$ configuration ->getMigrationsNamespace ()) {
70+
71+ if (empty ($ configuration ->getMigrationsNamespace ())) {
4572 $ configuration ->setMigrationsNamespace ($ container ->getParameter ('doctrine_migrations.namespace ' ));
4673 }
47- if (!$ configuration ->getName ()) {
74+
75+ if (empty ($ configuration ->getName ())) {
4876 $ configuration ->setName ($ container ->getParameter ('doctrine_migrations.name ' ));
4977 }
78+
5079 // For backward compatibility, need use a table from parameters for overwrite the default configuration
51- if (!($ configuration instanceof AbstractFileConfiguration) || ! $ configuration ->getMigrationsTableName ()) {
80+ if (! ($ configuration instanceof AbstractFileConfiguration) || empty ( $ configuration ->getMigrationsTableName () )) {
5281 $ configuration ->setMigrationsTableName ($ container ->getParameter ('doctrine_migrations.table_name ' ));
5382 }
83+
84+ $ configuration ->setMigrationsColumnName ($ container ->getParameter ('doctrine_migrations.column_name ' ));
85+ $ configuration ->setMigrationsColumnLength ($ container ->getParameter ('doctrine_migrations.column_length ' ));
86+ $ configuration ->setMigrationsExecutedAtColumnName ($ container ->getParameter ('doctrine_migrations.executed_at_column_name ' ));
87+ $ configuration ->setAllOrNothing ($ container ->getParameter ('doctrine_migrations.all_or_nothing ' ));
88+
5489 // Migrations is not register from configuration loader
55- if (!($ configuration instanceof AbstractFileConfiguration)) {
56- $ configuration ->registerMigrationsFromDirectory ($ configuration ->getMigrationsDirectory ());
90+ if (! ($ configuration instanceof AbstractFileConfiguration)) {
91+ $ migrationsDirectory = $ configuration ->getMigrationsDirectory ();
92+
93+ if ($ migrationsDirectory !== null ) {
94+ $ configuration ->registerMigrationsFromDirectory ($ migrationsDirectory );
95+ }
5796 }
5897
59- if (method_exists ($ configuration , 'getCustomTemplate ' ) && ! $ configuration ->getCustomTemplate ()) {
98+ if (method_exists ($ configuration , 'getCustomTemplate ' ) && empty ( $ configuration ->getCustomTemplate () )) {
6099 $ configuration ->setCustomTemplate ($ container ->getParameter ('doctrine_migrations.custom_template ' ));
61100 }
62101
63102 $ organizeMigrations = $ container ->getParameter ('doctrine_migrations.organize_migrations ' );
103+
64104 switch ($ organizeMigrations ) {
65105 case Configuration::VERSIONS_ORGANIZATION_BY_YEAR :
66106 $ configuration ->setMigrationsAreOrganizedByYear (true );
@@ -81,18 +121,19 @@ public static function configureMigrations(ContainerInterface $container, Config
81121 }
82122
83123 /**
84- * @param ContainerInterface $container
85- * @param array $versions
124+ * @param Version[] $versions
86125 *
87126 * Injects the container to migrations aware of it
88127 */
89- private static function injectContainerToMigrations (ContainerInterface $ container , array $ versions )
128+ private static function injectContainerToMigrations (ContainerInterface $ container , array $ versions ) : void
90129 {
91130 foreach ($ versions as $ version ) {
92131 $ migration = $ version ->getMigration ();
93- if ($ migration instanceof ContainerAwareInterface) {
94- $ migration -> setContainer ( $ container ) ;
132+ if (! ( $ migration instanceof ContainerAwareInterface) ) {
133+ continue ;
95134 }
135+
136+ $ migration ->setContainer ($ container );
96137 }
97138 }
98139}
0 commit comments