mergeMessageFileList.php: move code out of file scope.
Move code out of files scope, so mergeMessageFileList can be run from run.php. Change-Id: I349ef565a7c08f90a75b0fc6db49f030cb56f6cf
This commit is contained in:
parent
10b17b5132
commit
43f75a9cca
1 changed files with 78 additions and 72 deletions
|
|
@ -31,8 +31,6 @@ use MediaWiki\Settings\SettingsBuilder;
|
|||
define( 'MW_NO_EXTENSION_MESSAGES', 1 );
|
||||
|
||||
require_once __DIR__ . '/Maintenance.php';
|
||||
$maintClass = MergeMessageFileList::class;
|
||||
$mmfl = false;
|
||||
|
||||
/**
|
||||
* Maintenance script that merges $wgExtensionMessagesFiles from various
|
||||
|
|
@ -51,16 +49,16 @@ class MergeMessageFileList extends Maintenance {
|
|||
);
|
||||
$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->addDescription( 'Merge $wgExtensionMessagesFiles and $wgMessagesDirs from ' .
|
||||
$this->addDescription( 'Merge $wgExtensionMessagesFiles and $wgMessageDirs from ' .
|
||||
' various extensions to produce a single file listing all message files and dirs.'
|
||||
);
|
||||
}
|
||||
|
||||
public function execute() {
|
||||
global $mmfl;
|
||||
global $wgExtensionEntryPointListFiles;
|
||||
$config = $this->getConfig();
|
||||
$extensionEntryPointListFiles = $config->get( MainConfigNames::ExtensionEntryPointListFiles );
|
||||
|
||||
if ( !count( $wgExtensionEntryPointListFiles )
|
||||
if ( !count( $extensionEntryPointListFiles )
|
||||
&& !$this->hasOption( 'list-file' )
|
||||
&& !$this->hasOption( 'extensions-dir' )
|
||||
) {
|
||||
|
|
@ -68,12 +66,12 @@ class MergeMessageFileList extends Maintenance {
|
|||
"\$wgExtensionEntryPointListFiles is not set" );
|
||||
}
|
||||
|
||||
$mmfl = [ 'setupFiles' => [] ];
|
||||
$setupFiles = [];
|
||||
|
||||
# Add setup files contained in file passed to --list-file
|
||||
if ( $this->hasOption( 'list-file' ) ) {
|
||||
$extensionPaths = $this->readFile( $this->getOption( 'list-file' ) );
|
||||
$mmfl['setupFiles'] = array_merge( $mmfl['setupFiles'], $extensionPaths );
|
||||
$setupFiles = array_merge( $setupFiles, $extensionPaths );
|
||||
}
|
||||
|
||||
# Now find out files in a directory
|
||||
|
|
@ -95,7 +93,7 @@ class MergeMessageFileList extends Maintenance {
|
|||
$found = false;
|
||||
foreach ( $possibilities as $extfile ) {
|
||||
if ( file_exists( $extfile ) ) {
|
||||
$mmfl['setupFiles'][] = $extfile;
|
||||
$setupFiles[] = $extfile;
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
|
|
@ -110,17 +108,12 @@ class MergeMessageFileList extends Maintenance {
|
|||
}
|
||||
|
||||
# Add setup files defined via configuration
|
||||
foreach ( $wgExtensionEntryPointListFiles as $points ) {
|
||||
foreach ( $extensionEntryPointListFiles as $points ) {
|
||||
$extensionPaths = $this->readFile( $points );
|
||||
$mmfl['setupFiles'] = array_merge( $mmfl['setupFiles'], $extensionPaths );
|
||||
$setupFiles = array_merge( $setupFiles, $extensionPaths );
|
||||
}
|
||||
|
||||
if ( $this->hasOption( 'output' ) ) {
|
||||
$mmfl['output'] = $this->getOption( 'output' );
|
||||
}
|
||||
if ( $this->hasOption( 'quiet' ) ) {
|
||||
$mmfl['quiet'] = true;
|
||||
}
|
||||
$this->generateMessageFileList( $setupFiles );
|
||||
}
|
||||
|
||||
public function finalSetup( SettingsBuilder $settingsBuilder = null ) {
|
||||
|
|
@ -145,7 +138,7 @@ class MergeMessageFileList extends Maintenance {
|
|||
* @return array List of absolute extension paths
|
||||
*/
|
||||
private function readFile( $fileName ) {
|
||||
global $IP;
|
||||
$IP = MW_INSTALL_PATH;
|
||||
|
||||
$files = [];
|
||||
$fileLines = file( $fileName );
|
||||
|
|
@ -171,64 +164,77 @@ class MergeMessageFileList extends Maintenance {
|
|||
|
||||
return $files;
|
||||
}
|
||||
}
|
||||
|
||||
require_once RUN_MAINTENANCE_IF_MAIN;
|
||||
private function generateMessageFileList( array $setupFiles ) {
|
||||
$IP = MW_INSTALL_PATH;
|
||||
|
||||
$queue = [];
|
||||
'@phan-var string[][] $mmfl';
|
||||
foreach ( $mmfl['setupFiles'] as $fileName ) {
|
||||
if ( strval( $fileName ) === '' ) {
|
||||
continue;
|
||||
}
|
||||
if ( empty( $mmfl['quiet'] ) ) {
|
||||
fwrite( STDERR, "Loading data from $fileName\n" );
|
||||
}
|
||||
// Using extension.json or skin.json
|
||||
if ( str_ends_with( $fileName, '.json' ) ) {
|
||||
$queue[$fileName] = 1;
|
||||
} else {
|
||||
require_once $fileName;
|
||||
}
|
||||
}
|
||||
$outputFile = $this->getOption( 'output' );
|
||||
$quiet = $this->hasOption( 'quiet' );
|
||||
|
||||
if ( $queue ) {
|
||||
$registry = new ExtensionRegistry();
|
||||
$data = $registry->readFromQueue( $queue );
|
||||
foreach ( [ 'wgExtensionMessagesFiles', 'wgMessagesDirs' ] as $var ) {
|
||||
if ( isset( $data['globals'][$var] ) ) {
|
||||
$GLOBALS[$var] = array_merge( $data['globals'][$var], $GLOBALS[$var] );
|
||||
$queue = [];
|
||||
|
||||
foreach ( $setupFiles as $fileName ) {
|
||||
if ( strval( $fileName ) === '' ) {
|
||||
continue;
|
||||
}
|
||||
if ( !$quiet ) {
|
||||
fwrite( STDERR, "Loading data from $fileName\n" );
|
||||
}
|
||||
// Using extension.json or skin.json
|
||||
if ( str_ends_with( $fileName, '.json' ) ) {
|
||||
$queue[$fileName] = 1;
|
||||
} else {
|
||||
require_once $fileName;
|
||||
}
|
||||
}
|
||||
|
||||
$config = $this->getConfig();
|
||||
$vars = [
|
||||
'wgExtensionMessagesFiles' => $config->get( MainConfigNames::ExtensionMessagesFiles ),
|
||||
'wgMessageDirs' => $config->get( MainConfigNames::MessagesDirs ),
|
||||
];
|
||||
|
||||
if ( $queue ) {
|
||||
$registry = new ExtensionRegistry();
|
||||
$data = $registry->readFromQueue( $queue );
|
||||
foreach ( [ 'wgExtensionMessagesFiles', 'wgMessageDirs' ] as $var ) {
|
||||
if ( isset( $data['globals'][$var] ) ) {
|
||||
$vars[$var] = array_merge( $data['globals'][$var], $vars[$var] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( !$quiet ) {
|
||||
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( $vars['wgExtensionMessagesFiles'], true ) . ";\n\n" .
|
||||
'$wgMessageDirs = ' . var_export( $vars['wgMessageDirs'], true ) . ";\n\n";
|
||||
|
||||
$dirs = [
|
||||
$IP,
|
||||
dirname( __DIR__ ),
|
||||
realpath( $IP )
|
||||
];
|
||||
|
||||
foreach ( $dirs as $dir ) {
|
||||
$s = preg_replace( "/'" . preg_quote( $dir, '/' ) . "([^']*)'/", '"$IP\1"', $s );
|
||||
}
|
||||
|
||||
if ( $outputFile !== null ) {
|
||||
$res = file_put_contents( $outputFile, $s );
|
||||
if ( $res === false ) {
|
||||
fwrite( STDERR, "Failed to write to $outputFile\n" );
|
||||
exit( 1 );
|
||||
}
|
||||
} else {
|
||||
echo $s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( empty( $mmfl['quiet'] ) ) {
|
||||
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" .
|
||||
'$wgMessagesDirs = ' . var_export( $wgMessagesDirs, true ) . ";\n\n";
|
||||
|
||||
$dirs = [
|
||||
$IP,
|
||||
dirname( __DIR__ ),
|
||||
realpath( $IP )
|
||||
];
|
||||
|
||||
foreach ( $dirs as $dir ) {
|
||||
$s = preg_replace( "/'" . preg_quote( $dir, '/' ) . "([^']*)'/", '"$IP\1"', $s );
|
||||
}
|
||||
|
||||
if ( isset( $mmfl['output'] ) ) {
|
||||
$outputFile = $mmfl['output'];
|
||||
$res = file_put_contents( $outputFile, $s );
|
||||
if ( $res === false ) {
|
||||
fwrite( STDERR, "Failed to write to $outputFile\n" );
|
||||
exit( 1 );
|
||||
}
|
||||
} else {
|
||||
echo $s;
|
||||
}
|
||||
$maintClass = MergeMessageFileList::class;
|
||||
require_once RUN_MAINTENANCE_IF_MAIN;
|
||||
|
|
|
|||
Loading…
Reference in a new issue