Merge "Fix trailing whitespace (and mixed spaces) in XSD files"
[lhc/web/wiklou.git] / includes / installer / CliInstaller.php
index 710823a..0c3876c 100644 (file)
@@ -2,6 +2,21 @@
 /**
  * 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
  */
@@ -13,6 +28,7 @@
  * @since 1.17
  */
 class CliInstaller extends Installer {
+       private $specifiedScriptPath = false;
 
        private $optionMap = array(
                'dbtype' => 'wgDBtype',
@@ -23,13 +39,10 @@ class CliInstaller extends Installer {
                'dbprefix' => 'wgDBprefix',
                'dbtableoptions' => 'wgDBTableOptions',
                'dbmysql5' => 'wgDBmysql5',
-               'dbserver' => 'wgDBserver',
                'dbport' => 'wgDBport',
-               'dbname' => 'wgDBname',
-               'dbuser' => 'wgDBuser',
-               'dbpass' => 'wgDBpassword',
                'dbschema' => 'wgDBmwschema',
                'dbpath' => 'wgSQLiteDataDir',
+               'server' => 'wgServer',
                'scriptpath' => 'wgScriptPath',
        );
 
@@ -45,6 +58,10 @@ class CliInstaller extends Installer {
 
                parent::__construct();
 
+               if ( isset( $option['scriptpath'] ) ) {
+                       $this->specifiedScriptPath = true;
+               }
+
                foreach ( $this->optionMap as $opt => $global ) {
                        if ( isset( $option[$opt] ) ) {
                                $GLOBALS[$global] = $option[$opt];
@@ -77,6 +94,14 @@ class CliInstaller extends Installer {
                                $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'] ) ) {
@@ -88,7 +113,7 @@ class CliInstaller extends Installer {
         * Main entry point.
         */
        public function execute() {
-               $vars = $this->getExistingLocalSettings();
+               $vars = Installer::getExistingLocalSettings();
                if( $vars ) {
                        $this->showStatusMessage(
                                Status::newFatal( "config-localsettings-cli-upgrade" )
@@ -121,14 +146,33 @@ class CliInstaller extends Installer {
        }
 
        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 &lt;$1&gt;', $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 ) {
@@ -146,4 +190,20 @@ class CliInstaller extends Installer {
                        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;
+       }
 }