Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 21
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
Version
0.00% covered (danger)
0.00%
0 / 21
0.00% covered (danger)
0.00%
0 / 3
56
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 canExecuteWithoutLocalSettings
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 execute
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 1
30
1<?php
2/**
3 * Prints the version of MediaWiki.
4 *
5 * @license GPL-2.0-or-later
6 * @file
7 * @ingroup Maintenance
8 * @author Derick Alangi
9 * @since 1.36
10 */
11
12namespace MediaWiki\Maintenance;
13
14use MediaWiki\Utils\GitInfo;
15
16// @codeCoverageIgnoreStart
17require_once __DIR__ . '/Maintenance.php';
18// @codeCoverageIgnoreEnd
19
20/**
21 * @ingroup Maintenance
22 */
23class Version extends Maintenance {
24    public function __construct() {
25        parent::__construct();
26        $this->addDescription( 'Prints the current version of MediaWiki' );
27    }
28
29    public function canExecuteWithoutLocalSettings(): bool {
30        return true;
31    }
32
33    public function execute() {
34        if ( !defined( 'MW_VERSION' ) ) {
35            $this->fatalError( "MediaWiki version not defined or unknown" );
36        }
37
38        $contentLang = $this->getServiceContainer()->getContentLanguage();
39
40        $version = MW_VERSION;
41        $strictVersion = substr( $version, 0, 4 );
42        $isLTS = false;
43
44        // See: https://www.mediawiki.org/wiki/Topic:U4u94htjqupsosea
45        if ( $strictVersion >= '1.19' ) {
46            $x = (int)explode( '.', $strictVersion )[1];
47            $isLTS = ( $x - 19 ) % 4 === 0;
48        }
49
50        // Get build date and append if available
51        $gitInfo = new GitInfo( MW_INSTALL_PATH );
52        $gitHeadCommitDate = $gitInfo->getHeadCommitDate();
53        $buildDate = $contentLang->timeanddate( (string)$gitHeadCommitDate, true );
54
55        $text = "MediaWiki version: " . $version;
56        if ( $isLTS ) {
57            $text .= " LTS";
58        }
59        if ( $buildDate ) {
60            $text .= " (built: $buildDate)";
61        }
62
63        $this->output( $text . "\n" );
64    }
65}
66
67// @codeCoverageIgnoreStart
68$maintClass = Version::class;
69require_once RUN_MAINTENANCE_IF_MAIN;
70// @codeCoverageIgnoreEnd