X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=maintenance%2FmergeMessageFileList.php;h=6a9baa824fd229be89f2938acec0873f6bb5f0ca;hb=d266f40a2f828810d0249de1fdd7107a026066d4;hp=8669fe36c9e6430cee82a1d7caaf45597e4740d0;hpb=37b46ae357fcb7a382d5f67a9682763739483a87;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/mergeMessageFileList.php b/maintenance/mergeMessageFileList.php index 8669fe36c9..6a9baa824f 100644 --- a/maintenance/mergeMessageFileList.php +++ b/maintenance/mergeMessageFileList.php @@ -33,6 +33,7 @@ class MergeMessageFileList extends Maintenance { function __construct() { parent::__construct(); $this->addOption( 'list-file', 'A file containing a list of extension setup files, one per line.', true, true ); + $this->addOption( 'extensions-dir', 'Path where extensions can be found.', false, true ); $this->addOption( 'output', 'Send output to this file (omit for stdout)', false, true ); $this->mDescription = 'Merge $wgExtensionMessagesFiles from various extensions to produce a ' . 'single array containing all message files.'; @@ -41,11 +42,36 @@ class MergeMessageFileList extends Maintenance { public function execute() { global $mmfl; + # Add setup files contained in file passed to --list-file $lines = file( $this->getOption( 'list-file' ) ); if ( $lines === false ) { $this->error( 'Unable to open list file.' ); } $mmfl = array( 'setupFiles' => array_map( 'trim', $lines ) ); + + # Now find out files in a directory + $hasError = false; + 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; + } + $extfile = "{$extdir}/{$extname}/{$extname}.php"; + if ( file_exists( $extfile ) ) { + $mmfl['setupFiles'][] = $extfile; + } else { + $hasError = true; + $this->error( "Extension {$extname} in {$extdir} lacks expected {$extname}.php" ); + } + } + } + + if ( $hasError ) { + $this->error( "Some files are missing (see above). Giving up.", 1 ); + } + if ( $this->hasOption( 'output' ) ) { $mmfl['output'] = $this->getOption( 'output' ); }