* @ingroup Deployment
*/
+use MediaWiki\Installer\InstallException;
use MediaWiki\MediaWikiServices;
/**
* @param string $siteName
* @param string|null $admin
* @param array $options
+ * @throws InstallException
*/
function __construct( $siteName, $admin = null, array $options = [] ) {
global $wgContLang;
$status = $this->validateExtensions(
'extension', 'extensions', $options['extensions'] );
if ( !$status->isOK() ) {
- $this->showStatusMessage( $status );
+ throw new InstallException( $status );
}
$this->setVar( '_Extensions', $status->value );
} elseif ( isset( $options['with-extensions'] ) ) {
if ( isset( $options['skins'] ) ) {
$status = $this->validateExtensions( 'skin', 'skins', $options['skins'] );
if ( !$status->isOK() ) {
- $this->showStatusMessage( $status );
+ throw new InstallException( $status );
}
$skins = $status->value;
} else {
* Main entry point.
*/
public function execute() {
+ // If APC is available, use that as the MainCacheType, instead of nothing.
+ // This is hacky and should be consolidated with WebInstallerOptions.
+ // This is here instead of in __construct(), because it should run run after
+ // doEnvironmentChecks(), which populates '_Caches'.
+ if ( count( $this->getVar( '_Caches' ) ) ) {
+ // We detected a CACHE_ACCEL implementation, use it.
+ $this->setVar( '_MainCacheType', 'accel' );
+ }
+
$vars = Installer::getExistingLocalSettings();
if ( $vars ) {
- $this->showStatusMessage(
- Status::newFatal( "config-localsettings-cli-upgrade" )
- );
+ $status = Status::newFatal( "config-localsettings-cli-upgrade" );
+ $this->showStatusMessage( $status );
+ return $status;
}
- $this->performInstallation(
+ $result = $this->performInstallation(
[ $this, 'startStage' ],
[ $this, 'endStage' ]
);
+ // PerformInstallation bails on a fatal, so make sure the last item
+ // completed before giving 'next.' Likewise, only provide back on failure
+ $lastStepStatus = end( $result );
+ if ( $lastStepStatus->isOK() ) {
+ return Status::newGood();
+ } else {
+ return $lastStepStatus;
+ }
}
/**
$this->showMessage( ...$w );
}
}
-
- if ( !$status->isOK() ) {
- echo "\n";
- exit( 1 );
- }
}
public function envCheckPath() {