Merge "Tests for Revision::userCanBitfield"
[lhc/web/wiklou.git] / maintenance / mergeMessageFileList.php
index 46d5474..8d2534e 100644 (file)
@@ -36,11 +36,6 @@ $mmfl = false;
  * @ingroup Maintenance
  */
 class MergeMessageFileList extends Maintenance {
-       /**
-        * @var bool
-        */
-       protected $hasError;
-
        function __construct() {
                parent::__construct();
                $this->addOption(
@@ -81,29 +76,33 @@ class MergeMessageFileList extends Maintenance {
                # Now find out files in a directory
                if ( $this->hasOption( 'extensions-dir' ) ) {
                        $extdir = $this->getOption( 'extensions-dir' );
-                       $entries = scandir( $extdir );
-                       foreach ( $entries as $extname ) {
-                               if ( $extname == '.' || $extname == '..' || !is_dir( "$extdir/$extname" ) ) {
-                                       continue;
-                               }
-                               $possibilities = [
-                                       "$extdir/$extname/extension.json",
-                                       "$extdir/$extname/skin.json",
-                                       "$extdir/$extname/$extname.php"
-                               ];
-                               $found = false;
-                               foreach ( $possibilities as $extfile ) {
-                                       if ( file_exists( $extfile ) ) {
-                                               $mmfl['setupFiles'][] = $extfile;
-                                               $found = true;
-                                               break;
+                       # Allow multiple directories to be passed with ":" as delimiter
+                       $extdirs = explode( ':', $extdir );
+                       $entries = [];
+                       foreach ( $extdirs as $extdir ) {
+                               $entries = scandir( $extdir );
+                               foreach ( $entries as $extname ) {
+                                       if ( $extname == '.' || $extname == '..' || !is_dir( "$extdir/$extname" ) ) {
+                                               continue;
+                                       }
+                                       $possibilities = [
+                                               "$extdir/$extname/extension.json",
+                                               "$extdir/$extname/skin.json",
+                                               "$extdir/$extname/$extname.php"
+                                       ];
+                                       $found = false;
+                                       foreach ( $possibilities as $extfile ) {
+                                               if ( file_exists( $extfile ) ) {
+                                                       $mmfl['setupFiles'][] = $extfile;
+                                                       $found = true;
+                                                       break;
+                                               }
                                        }
-                               }
 
-                               if ( !$found ) {
-                                       $this->hasError = true;
-                                       $this->error( "Extension {$extname} in {$extdir} lacks expected entry point: " .
-                                               "extension.json, skin.json, or {$extname}.php." );
+                                       if ( !$found ) {
+                                               $this->error( "Extension {$extname} in {$extdir} lacks expected entry point: " .
+                                                       "extension.json, skin.json, or {$extname}.php." );
+                                       }
                                }
                        }
                }
@@ -114,10 +113,6 @@ class MergeMessageFileList extends Maintenance {
                        $mmfl['setupFiles'] = array_merge( $mmfl['setupFiles'], $extensionPaths );
                }
 
-               if ( $this->hasError ) {
-                       $this->error( "Some files are missing (see above). Giving up.", 1 );
-               }
-
                if ( $this->hasOption( 'output' ) ) {
                        $mmfl['output'] = $this->getOption( 'output' );
                }