24require_once __DIR__ .
'/Maintenance.php';
26define(
'MW_CONFIG_CALLBACK',
'Installer::overrideConfig' );
27define(
'MEDIAWIKI_INSTALL',
true );
40 parent::__construct();
43 $this->
addDescription(
"CLI-based MediaWiki installation and configuration.\n" .
44 "Default options are indicated in parentheses." );
46 $this->
addArg(
'name',
'The name of the wiki (MediaWiki)',
false );
48 $this->
addArg(
'admin',
'The username of the wiki administrator.' );
49 $this->
addOption(
'pass',
'The password for the wiki administrator.',
false,
true );
52 'An alternative way to provide pass option, as the contents of this file',
59 'The relative path of the wiki in the web server (/wiki)',
65 'The base URL of the web server the wiki will be on (http://localhost)',
70 $this->
addOption(
'lang',
'The language to use (en)',
false,
true );
73 $this->
addOption(
'dbtype',
'The type of database (mysql)',
false,
true );
74 $this->
addOption(
'dbserver',
'The database host (localhost)',
false,
true );
75 $this->
addOption(
'dbport',
'The database port; only for PostgreSQL (5432)',
false,
true );
76 $this->
addOption(
'dbname',
'The database name (my_wiki)',
false,
true );
77 $this->
addOption(
'dbpath',
'The path for the SQLite DB ($IP/data)',
false,
true );
78 $this->
addOption(
'dbprefix',
'Optional database table name prefix',
false,
true );
79 $this->
addOption(
'installdbuser',
'The user to use for installing (root)',
false,
true );
80 $this->
addOption(
'installdbpass',
'The password for the DB user to install as.',
false,
true );
81 $this->
addOption(
'dbuser',
'The user to use for normal operations (wikiuser)',
false,
true );
82 $this->
addOption(
'dbpass',
'The password for the DB user for normal operations',
false,
true );
85 'An alternative way to provide dbpass option, as the contents of this file',
89 $this->
addOption(
'confpath',
"Path to write LocalSettings.php to ($IP)",
false,
true );
90 $this->
addOption(
'dbschema',
'The schema for the MediaWiki DB in '
91 .
'PostgreSQL/Microsoft SQL Server (mediawiki)',
false,
true );
96 $this->
addOption(
'env-checks',
"Run environment checks only, don't change anything" );
98 $this->
addOption(
'with-extensions',
"Detect and include extensions" );
99 $this->
addOption(
'extensions',
'Comma-separated list of extensions to install',
100 false,
true,
false,
true );
101 $this->
addOption(
'skins',
'Comma-separated list of skins to install (default: all)',
102 false,
true,
false,
true );
106 if ( $this->
hasOption(
'env-checks' ) ) {
109 return parent::getDbType();
115 $siteName = $this->
getArg( 0,
'MediaWiki' );
116 $adminName = $this->
getArg( 1 );
117 $envChecksOnly = $this->
hasOption(
'env-checks' );
120 if ( !$envChecksOnly ) {
127 $this->
output( $e->getStatus()->getMessage(
false,
false,
'en' )->text() .
"\n" );
131 $status = $installer->doEnvironmentChecks();
132 if ( $status->isGood() ) {
133 $installer->showMessage(
'config-env-good' );
135 $installer->showStatusMessage( $status );
139 if ( !$envChecksOnly ) {
140 $status = $installer->execute();
141 if ( !$status->isGood() ) {
142 $installer->showStatusMessage( $status );
146 $installer->writeConfigurationFile( $this->
getOption(
'confpath', $IP ) );
147 $installer->showMessage(
148 'config-install-success',
149 $installer->getVar(
'wgServer' ),
150 $installer->getVar(
'wgScriptPath' )
157 $dbpassfile = $this->
getOption(
'dbpassfile' );
158 if ( $dbpassfile !==
null ) {
159 if ( $this->
getOption(
'dbpass' ) !==
null ) {
160 $this->
error(
'WARNING: You have provided the options "dbpass" and "dbpassfile". '
161 .
'The content of "dbpassfile" overrides "dbpass".' );
163 Wikimedia\suppressWarnings();
164 $dbpass = file_get_contents( $dbpassfile );
165 Wikimedia\restoreWarnings();
166 if ( $dbpass ===
false ) {
167 $this->
fatalError(
"Couldn't open $dbpassfile" );
169 $this->mOptions[
'dbpass'] = trim( $dbpass,
"\r\n" );
174 $passfile = $this->
getOption(
'passfile' );
175 if ( $passfile !==
null ) {
176 if ( $this->
getOption(
'pass' ) !==
null ) {
177 $this->
error(
'WARNING: You have provided the options "pass" and "passfile". '
178 .
'The content of "passfile" overrides "pass".' );
180 Wikimedia\suppressWarnings();
181 $pass = file_get_contents( $passfile );
182 Wikimedia\restoreWarnings();
183 if ( $pass ===
false ) {
184 $this->
fatalError(
"Couldn't open $passfile" );
186 $this->mOptions[
'pass'] = trim( $pass,
"\r\n" );
187 } elseif ( $this->
getOption(
'pass' ) ===
null ) {
188 $this->
fatalError(
'You need to provide the option "pass" or "passfile"' );
193 if ( !$this->
hasOption(
'env-checks' ) ) {
194 parent::validateParamsAndArgs();
const RUN_MAINTENANCE_IF_MAIN
Maintenance script to install and configure MediaWiki.
validateParamsAndArgs()
Run some validation checks on the params, etc Stable for overriding.
getDbType()
Does the script need different DB access? By default, we give Maintenance scripts normal rights to th...
execute()
Do the actual work.
__construct()
Default constructor.
static getCliInstaller( $siteName, $admin=null, array $options=[])
Instantiates and returns an instance of CliInstaller or its descendant classes.
Abstract maintenance class for quickly writing and churning out maintenance scripts with minimal effo...
error( $err, $die=0)
Throw an error to the user.
addArg( $arg, $description, $required=true)
Add some args that are needed.
const DB_NONE
Constants for DB access type.
output( $out, $channel=null)
Throw some output to the user.
hasOption( $name)
Checks to see if a particular option was set.
getArg( $argId=0, $default=null)
Get an argument.
addDescription( $text)
Set the description text.
addOption( $name, $description, $required=false, $withArg=false, $shortName=false, $multiOccurrence=false)
Add a parameter to the script.
getOption( $name, $default=null)
Get an option, or return the default.
fatalError( $msg, $exitCode=1)
Output a message and terminate the current script.