rebuildLocalisationCache: Implement --lang option

It would rebuild all language caches by default.
We were lacking an option to rebuild only one language, for example when
it get corrupted or the cache file for a language got removed.

The new --lang accepts a list of comma separated langs to rebuild the
cache for.  Example usage:

 php rebuildLocalisationCache.php --lang en,fr,de

Nonexistent languages are simply ignored. The script dies if it ends up
with no languages to rebuild.

Change-Id: I4c5e69abb76ffd8b88b595e3687edab3bb267ccc
This commit is contained in:
Antoine Musso 2013-04-30 16:50:20 +02:00
parent 4607c38b25
commit a677d0fae0
2 changed files with 17 additions and 1 deletions

View file

@ -56,6 +56,8 @@ production.
language links associated with a page before display.
* Chosen (http://harvesthq.github.io/chosen/) was added as module 'jquery.chosen'
* HTMLForm will turn multiselect checkboxes into a Chosen interface when setting cssclass 'mw-chosen'
* rebuildLocalisationCache learned --lang option. Let you rebuild l10n caches
of the specified languages instead of all of them.
=== Bug fixes in 1.22 ===
* Disable Special:PasswordReset when $wgEnableEmail. Previously one could still

View file

@ -44,6 +44,8 @@ class RebuildLocalisationCache extends Maintenance {
$this->addOption( 'threads', 'Fork more than one thread', false, true );
$this->addOption( 'outdir', 'Override the output directory (normally $wgCacheDirectory)',
false, true );
$this->addOption( 'lang', 'Only rebuild these languages, comma separated.',
false, true );
}
public function memoryLimit() {
@ -90,7 +92,19 @@ class RebuildLocalisationCache extends Maintenance {
}
$lc = new LocalisationCache_BulkLoad( $conf );
$codes = array_keys( Language::fetchLanguageNames( null, 'mwfile' ) );
$allCodes = array_keys( Language::fetchLanguageNames( null, 'mwfile' ) );
if( $this->hasOption( 'lang' ) ) {
# Validate requested languages
$codes = array_intersect( $allCodes,
explode( ',', $this->getOption( 'lang' ) ) );
# Bailed out if nothing is left
if( count( $codes ) == 0 ) {
$this->error( 'None of the languages specified exists.', 1 );
}
} else {
# By default get all languages
$codes = $allCodes;
}
sort( $codes );
// Initialise and split into chunks