* It doesn't support the oo interface. * Should make the tidy tests run in CI. Bug: T157730 Change-Id: Ied80f70b7cafcf64d736cb0eeb1a30d52c1d7921
95 lines
2.6 KiB
PHP
95 lines
2.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* 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 Testing
|
|
*/
|
|
|
|
/**
|
|
* Initialize and detect the tidy support
|
|
*/
|
|
class TidySupport {
|
|
private $enabled;
|
|
private $config;
|
|
|
|
/**
|
|
* Determine if there is a usable tidy.
|
|
*/
|
|
public function __construct( $useConfiguration = false ) {
|
|
global $IP, $wgUseTidy, $wgTidyBin, $wgTidyInternal, $wgTidyConfig,
|
|
$wgTidyConf, $wgTidyOpts;
|
|
|
|
$this->enabled = true;
|
|
if ( $useConfiguration ) {
|
|
if ( $wgTidyConfig !== null ) {
|
|
$this->config = $wgTidyConfig;
|
|
} elseif ( $wgUseTidy ) {
|
|
$this->config = [
|
|
'tidyConfigFile' => $wgTidyConf,
|
|
'debugComment' => false,
|
|
'tidyBin' => $wgTidyBin,
|
|
'tidyCommandLine' => $wgTidyOpts
|
|
];
|
|
if ( $wgTidyInternal ) {
|
|
$this->config['driver'] = wfIsHHVM() ? 'RaggettInternalHHVM' : 'RaggettInternalPHP';
|
|
} else {
|
|
$this->config['driver'] = 'RaggettExternal';
|
|
}
|
|
} else {
|
|
$this->enabled = false;
|
|
}
|
|
} else {
|
|
$this->config = [
|
|
'tidyConfigFile' => "$IP/includes/tidy/tidy.conf",
|
|
'tidyCommandLine' => '',
|
|
];
|
|
if ( extension_loaded( 'tidy' ) && ( wfIsHHVM() || class_exists( 'tidy' ) ) ) {
|
|
$this->config['driver'] = wfIsHHVM() ? 'RaggettInternalHHVM' : 'RaggettInternalPHP';
|
|
} else {
|
|
if ( is_executable( $wgTidyBin ) ) {
|
|
$this->config['driver'] = 'RaggettExternal';
|
|
$this->config['tidyBin'] = $wgTidyBin;
|
|
} else {
|
|
$path = Installer::locateExecutableInDefaultPaths( $wgTidyBin );
|
|
if ( $path !== false ) {
|
|
$this->config['driver'] = 'RaggettExternal';
|
|
$this->config['tidyBin'] = $wgTidyBin;
|
|
} else {
|
|
$this->enabled = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ( !$this->enabled ) {
|
|
$this->config = [ 'driver' => 'disabled' ];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns true if tidy is usable
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isEnabled() {
|
|
return $this->enabled;
|
|
}
|
|
|
|
public function getConfig() {
|
|
return $this->config;
|
|
}
|
|
}
|