Let install.php detect and inject extensions [2]
authorAntoine Musso <hashar@free.fr>
Tue, 13 Mar 2018 09:16:15 +0000 (10:16 +0100)
committerAntoine Musso <hashar@free.fr>
Wed, 4 Apr 2018 12:25:30 +0000 (14:25 +0200)
For CI, I went with a dirty trick to find extensions and either
wfLoadExtension() or include them. That has since been ported to
Installer::findExtensions() and LocalSettingsGenerator::getText().

The WebInstaller() relies on that to detect extensions and let the user
tick the ones to be installed.

Add --with-extensions to install.php so one can include all extensions
from the command line.

Note: The CliInstaller always wfLoad() any skin it can find.

The original patch 53926d9d was broken and got reverted. This is the
proper one.

Bug: T189567
Change-Id: I41820fce12e01224d64ab711e016835ef4d4febc

RELEASE-NOTES-1.31
includes/installer/CliInstaller.php
maintenance/install.php

index 75d7b7a..9d9a26b 100644 (file)
@@ -74,6 +74,8 @@ production.
   and non-MySQL ::replace() and ::upsert() no longer roll back the whole
   transaction on failure.
 * (T189785) Added a monthly heartbeat ping to the pingback feature.
+* The CLI installer (maintenance/install.php) learned to detect and include
+  extensions. Pass --with-extensions to enable that feature.
 
 === External library changes in 1.31 ===
 
index 32d2634..715f5df 100644 (file)
@@ -107,6 +107,11 @@ class CliInstaller extends Installer {
                        $this->setVar( '_AdminPassword', $option['pass'] );
                }
 
+               // Detect and inject any extension found
+               if ( isset( $option['with-extensions'] ) ) {
+                       $this->setVar( '_Extensions', array_keys( $this->findExtensions() ) );
+               }
+
                // Set up the default skins
                $skins = array_keys( $this->findExtensions( 'skins' ) );
                $this->setVar( '_Skins', $skins );
index 6249094..438e9dc 100644 (file)
@@ -88,6 +88,8 @@ class CommandLineInstaller extends Maintenance {
                        false, true );
                */
                $this->addOption( 'env-checks', "Run environment checks only, don't change anything" );
+
+               $this->addOption( 'with-extensions', "Detect and include extensions" );
        }
 
        public function getDbType() {