From cd28ef5cbe894bf9f5a22ee309ac72a68670b3c3 Mon Sep 17 00:00:00 2001 From: "Mark A. Hershberger" Date: Sun, 19 Dec 2010 04:55:00 +0000 Subject: [PATCH] * Add --wikiroot option to CLI installer so the user can give something besides /wiki * Add --upgrade option to CLI installer so we can throw an error when LocalSettings.php is present and provide an upgrade route to the user. * Fixup CLI's showStatusMessage so allow CLI to throw an error and quit --- includes/installer/CliInstaller.php | 48 ++++++++++++++++++--------- includes/installer/Installer.i18n.php | 2 ++ maintenance/install.php | 4 +++ 3 files changed, 39 insertions(+), 15 deletions(-) diff --git a/includes/installer/CliInstaller.php b/includes/installer/CliInstaller.php index fc71c0c214..3bc45b9839 100644 --- a/includes/installer/CliInstaller.php +++ b/includes/installer/CliInstaller.php @@ -32,6 +32,10 @@ class CliInstaller extends CoreInstaller { 'dbts2schema' => 'wgDBts2schema', 'dbpath' => 'wgSQLiteDataDir', 'scriptpath' => 'wgScriptPath', + 'wikiroot' => 'wgScriptPath', + 'upgrade' => 'cliUpgrade', /* As long as it isn't $confItems + * in LocalSettingsGenerator, we + * should be fine. */ ); /** @@ -81,6 +85,15 @@ class CliInstaller extends CoreInstaller { * Main entry point. */ public function execute() { + global $cliUpgrade; + + $vars = $this->getExistingLocalSettings(); + if( $vars && ( !isset( $cliUpgrade ) || $cliUpgrade !== "yes" ) ) { + $this->showStatusMessage( + Status::newFatal( "config-localsettings-cli-upgrade" ) + ); + } + $this->performInstallation( array( $this, 'startStage' ), array( $this, 'endStage' ) @@ -103,32 +116,37 @@ class CliInstaller extends CoreInstaller { } public function endStage( $step, $status ) { - $warnings = $status->getWarningsArray(); - - if ( !$status->isOk() ) { - $this->showStatusMessage( $status ); - echo "\n"; - exit; - } elseif ( count( $warnings ) !== 0 ) { - foreach ( $status->getWikiTextArray( $warnings ) as $w ) { - $this->showMessage( $w . wfMsg( 'ellipsis' ) . - wfMsg( 'word-separator' ) ); - } - } - + $this->showStatusMessage( $status ); $this->showMessage( wfMsg( 'config-install-step-done' ) . "\n" ); } public function showMessage( $msg /*, ... */ ) { $params = func_get_args(); array_shift( $params ); - $text = wfMsgExt( $msg, array( 'parseinline' ), $params ); + + /* parseinline has the nasty side-effect of putting encoded + * angle brackets, around the message, so the substr removes + * them. */ + $text = substr( wfMsgExt( $msg, array( 'parseinline' ), $params ), 4, -4 ); $text = preg_replace( '/(.*?)<\/a>/', '$2 <$1>', $text ); echo html_entity_decode( strip_tags( $text ), ENT_QUOTES ) . "\n"; flush(); } public function showStatusMessage( Status $status ) { - $this->showMessage( $status->getWikiText() ); + $warnings = array_merge( $status->getWarningsArray(), + $status->getErrorsArray() ); + + if ( count( $warnings ) !== 0 ) { + foreach ( $status->getWikiTextArray( $warnings ) as $w ) { + $this->showMessage( $w . wfMsg( 'ellipsis' ) . + wfMsg( 'word-separator' ) ); + } + } + + if ( !$status->isOk() ) { + echo "\n"; + exit; + } } } diff --git a/includes/installer/Installer.i18n.php b/includes/installer/Installer.i18n.php index a1423f5c37..a6b9e26639 100644 --- a/includes/installer/Installer.i18n.php +++ b/includes/installer/Installer.i18n.php @@ -18,6 +18,8 @@ $messages['en'] = array( 'config-localsettings-upgrade' => "A LocalSettings.php file has been detected. To upgrade this installation, please enter the value of \$wgUpgradeKey in the box below. You will find it in LocalSettings.php.", + 'config-localsettings-cli-upgrade' => 'A LocalSettings.php file has been detected. +To upgrade this installation, please give the --upgrade=yes option.', 'config-localsettings-key' => 'Upgrade key:', 'config-localsettings-badkey' => 'The key you provided is incorrect.', 'config-upgrade-key-missing' => 'An existing installation of MediaWiki has been detected. diff --git a/maintenance/install.php b/maintenance/install.php index 56e49cf83c..8834ed324b 100644 --- a/maintenance/install.php +++ b/maintenance/install.php @@ -49,10 +49,14 @@ class CommandLineInstaller extends Maintenance { $this->addOption( 'dbuser', 'The user to use for normal operations (wikiuser)', false, true ); $this->addOption( 'dbpass', 'The pasword for the DB user for normal operations', false, true ); $this->addOption( 'confpath', "Path to write LocalSettings.php to, default $IP", false, true ); + $this->addOption( 'wikiroot', "The URL to use for the wiki root (/wiki)", false, true ); /* $this->addOption( 'dbschema', 'The schema for the MediaWiki DB in pg (mediawiki)', false, true ); */ /* $this->addOption( 'dbtsearch2schema', 'The schema for the tsearch2 DB in pg (public)', false, true ); */ /* $this->addOption( 'namespace', 'The project namespace (same as the name)', false, true ); */ $this->addOption( 'env-checks', "Run environment checks only, don't change anything" ); + $this->addOption( 'upgrade', + 'Allow the upgrade to continue despite an existing LocalSettings.php', false, true ); + } public function execute() { -- 2.20.1