/**
* Core installer command line interface.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup Deployment
*/
* @since 1.17
*/
class CliInstaller extends Installer {
+ private $specifiedScriptPath = false;
private $optionMap = array(
'dbtype' => 'wgDBtype',
'dbprefix' => 'wgDBprefix',
'dbtableoptions' => 'wgDBTableOptions',
'dbmysql5' => 'wgDBmysql5',
- 'dbserver' => 'wgDBserver',
'dbport' => 'wgDBport',
- 'dbname' => 'wgDBname',
- 'dbuser' => 'wgDBuser',
- 'dbpass' => 'wgDBpassword',
'dbschema' => 'wgDBmwschema',
'dbpath' => 'wgSQLiteDataDir',
+ 'server' => 'wgServer',
'scriptpath' => 'wgScriptPath',
);
parent::__construct();
+ if ( isset( $option['scriptpath'] ) ) {
+ $this->specifiedScriptPath = true;
+ }
+
foreach ( $this->optionMap as $opt => $global ) {
if ( isset( $option[$opt] ) ) {
$GLOBALS[$global] = $option[$opt];
$this->getVar( 'wgDBuser' ) );
$this->setVar( '_InstallPassword',
$this->getVar( 'wgDBpassword' ) );
+ } else {
+ $this->setVar( '_InstallUser',
+ $option['installdbuser'] );
+ $this->setVar( '_InstallPassword',
+ isset( $option['installdbpass'] ) ? $option['installdbpass'] : "" );
+
+ // Assume that if we're given the installer user, we'll create the account.
+ $this->setVar( '_CreateDBAccount', true );
}
if ( isset( $option['pass'] ) ) {
* Main entry point.
*/
public function execute() {
- $vars = $this->getExistingLocalSettings();
+ $vars = Installer::getExistingLocalSettings();
if( $vars ) {
$this->showStatusMessage(
Status::newFatal( "config-localsettings-cli-upgrade" )
}
public function showMessage( $msg /*, ... */ ) {
- $params = func_get_args();
- array_shift( $params );
+ echo $this->getMessageText( func_get_args() ) . "\n";
+ flush();
+ }
+
+ public function showError( $msg /*, ... */ ) {
+ echo "***{$this->getMessageText( func_get_args() )}***\n";
+ flush();
+ }
+
+ /**
+ * @param $params array
+ *
+ * @return string
+ */
+ protected function getMessageText( $params ) {
+ $msg = array_shift( $params );
$text = wfMsgExt( $msg, array( 'parseinline' ), $params );
$text = preg_replace( '/<a href="(.*?)".*?>(.*?)<\/a>/', '$2 <$1>', $text );
- echo html_entity_decode( strip_tags( $text ), ENT_QUOTES ) . "\n";
- flush();
+ return html_entity_decode( strip_tags( $text ), ENT_QUOTES );
+ }
+
+ /**
+ * Dummy
+ */
+ public function showHelpBox( $msg /*, ... */ ) {
}
public function showStatusMessage( Status $status ) {
exit;
}
}
+
+ public function envCheckPath( ) {
+ if ( !$this->specifiedScriptPath ) {
+ $this->showMessage( 'config-no-cli-uri', $this->getVar("wgScriptPath") );
+ }
+ return parent::envCheckPath();
+ }
+
+ protected function envGetDefaultServer() {
+ return $this->getVar( 'wgServer' );
+ }
+
+ public function dirIsExecutable( $dir, $url ) {
+ $this->showMessage( 'config-no-cli-uploads-check', $dir );
+ return false;
+ }
}