* @author Gergő Tisza <tgr.huwiki@gmail.com>
*/
+use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\Logger\ConsoleSpi;
+use MediaWiki\MediaWikiServices;
+
require_once __DIR__ . '/Maintenance.php';
/**
parent::__construct();
$this->addOption( 'd',
'For back compatibility with eval.php. ' .
- '0 send debug to stdout. ' .
- 'With 1 additionally initialize database with debugging ',
+ '1 send debug to stderr. ' .
+ 'With 2 additionally initialize database with debugging ',
false, true
);
}
public function execute() {
if ( !class_exists( \Psy\Shell::class ) ) {
- $this->error( 'PsySH not found. Please run composer with the --dev option.', 1 );
+ $this->fatalError( 'PsySH not found. Please run composer with the --dev option.' );
}
$traverser = new \PhpParser\NodeTraverser();
// add this after initializing the code cleaner so all the default passes get added first
$traverser->addVisitor( new CodeCleanerGlobalsPass() );
- $config = new \Psy\Configuration( [ 'codeCleaner' => $codeCleaner ] );
+ $config = new \Psy\Configuration();
+ $config->setCodeCleaner( $codeCleaner );
$config->setUpdateCheck( \Psy\VersionUpdater\Checker::NEVER );
+ // prevent https://github.com/bobthecow/psysh/issues/443 when using sudo -E
+ $config->setRuntimeDir( wfTempDir() );
+
$shell = new \Psy\Shell( $config );
if ( $this->hasOption( 'd' ) ) {
$this->setupLegacy();
* For back compatibility with eval.php
*/
protected function setupLegacy() {
- global $wgDebugLogFile;
-
$d = intval( $this->getOption( 'd' ) );
if ( $d > 0 ) {
- $wgDebugLogFile = 'php://stdout';
+ LoggerFactory::registerProvider( new ConsoleSpi );
+ // Some services hold Logger instances in object properties
+ MediaWikiServices::resetGlobalInstance();
}
if ( $d > 1 ) {
# Set DBO_DEBUG (equivalent of $wgDebugDumpSql)
- # XXX copy pasted from eval.php :(
- $lb = wfGetLB();
- $serverCount = $lb->getServerCount();
- for ( $i = 0; $i < $serverCount; $i++ ) {
- $server = $lb->getServerInfo( $i );
- $server['flags'] |= DBO_DEBUG;
- $lb->setServerInfo( $i, $server );
- }
+ $this->getDB( DB_MASTER )->setFlag( DBO_DEBUG );
+ $this->getDB( DB_REPLICA )->setFlag( DBO_DEBUG );
}
}
}
-$maintClass = 'MediaWikiShell';
+$maintClass = MediaWikiShell::class;
require_once RUN_MAINTENANCE_IF_MAIN;