diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2013-01-18 16:46:04 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2013-01-18 16:46:04 +0100 |
commit | 63601400e476c6cf43d985f3e7b9864681695ed4 (patch) | |
tree | f7846203a952e38aaf66989d0a4702779f549962 /maintenance/mergeMessageFileList.php | |
parent | 8ff01378c9e0207f9169b81966a51def645b6a51 (diff) |
Update to MediaWiki 1.20.2
this update includes:
* adjusted Arch Linux skin
* updated FluxBBAuthPlugin
* patch for https://bugzilla.wikimedia.org/show_bug.cgi?id=44024
Diffstat (limited to 'maintenance/mergeMessageFileList.php')
-rw-r--r-- | maintenance/mergeMessageFileList.php | 101 |
1 files changed, 68 insertions, 33 deletions
diff --git a/maintenance/mergeMessageFileList.php b/maintenance/mergeMessageFileList.php index b5a911aa..cea64333 100644 --- a/maintenance/mergeMessageFileList.php +++ b/maintenance/mergeMessageFileList.php @@ -25,64 +25,99 @@ # Start from scratch define( 'MW_NO_EXTENSION_MESSAGES', 1 ); -require_once( dirname( __FILE__ ) . '/Maintenance.php' ); +require_once( __DIR__ . '/Maintenance.php' ); +$maintClass = 'MergeMessageFileList'; +$mmfl = false; +/** + * Maintenance script that merges $wgExtensionMessagesFiles from various + * extensions to produce a single array containing all message files. + * + * @ingroup Maintenance + */ 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.'; } 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 ) ); - if ( $this->hasOption( 'output' ) ) { - $mmfl['output'] = $this->getOption( 'output' ); - } - global $IP, $wgExtensionMessagesFiles; - foreach ( $mmfl['setupFiles'] as $fileName ) { - if ( strval( $fileName ) === '' ) { - continue; + # 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" ); + } } - $fileName = str_replace( '$IP', $IP, $fileName ); - fwrite( STDERR, "Loading data from $fileName\n" ); - include_once( $fileName ); } - fwrite( STDERR, "\n" ); - $s = - "<" . "?php\n" . - "## This file is generated by mergeMessageFileList.php. Do not edit it directly.\n\n" . - "if ( defined( 'MW_NO_EXTENSION_MESSAGES' ) ) return;\n\n" . - '$wgExtensionMessagesFiles = ' . var_export( $wgExtensionMessagesFiles, true ) . ";\n"; - $dirs = array( - $IP, - dirname( dirname( __FILE__ ) ), - realpath( $IP ) - ); - - foreach ( $dirs as $dir ) { - $s = preg_replace( - "/'" . preg_quote( $dir, '/' ) . "([^']*)'/", - '"$IP\1"', - $s ); + if ( $hasError ) { + $this->error( "Some files are missing (see above). Giving up.", 1 ); } - if ( isset( $mmfl['output'] ) ) { - file_put_contents( $mmfl['output'], $s ); - } else { - echo $s; + if ( $this->hasOption( 'output' ) ) { + $mmfl['output'] = $this->getOption( 'output' ); } } } -$maintClass = 'MergeMessageFileList'; require_once( RUN_MAINTENANCE_IF_MAIN ); + +foreach ( $mmfl['setupFiles'] as $fileName ) { + if ( strval( $fileName ) === '' ) { + continue; + } + $fileName = str_replace( '$IP', $IP, $fileName ); + fwrite( STDERR, "Loading data from $fileName\n" ); + include_once( $fileName ); +} +fwrite( STDERR, "\n" ); +$s = + "<" . "?php\n" . + "## This file is generated by mergeMessageFileList.php. Do not edit it directly.\n\n" . + "if ( defined( 'MW_NO_EXTENSION_MESSAGES' ) ) return;\n\n" . + '$wgExtensionMessagesFiles = ' . var_export( $wgExtensionMessagesFiles, true ) . ";\n\n"; + +$dirs = array( + $IP, + dirname( __DIR__ ), + realpath( $IP ) +); + +foreach ( $dirs as $dir ) { + $s = preg_replace( + "/'" . preg_quote( $dir, '/' ) . "([^']*)'/", + '"$IP\1"', + $s ); +} + +if ( isset( $mmfl['output'] ) ) { + file_put_contents( $mmfl['output'], $s ); +} else { + echo $s; +} + |