use MediaWiki\Logger\LoggerFactory;
use MediaWiki\Logger\ConsoleSpi;
+use MediaWiki\MediaWikiServices;
require_once __DIR__ . '/Maintenance.php';
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();
$d = intval( $this->getOption( 'd' ) );
if ( $d > 0 ) {
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 );
- }
+ wfGetDB( DB_MASTER )->setFlag( DBO_DEBUG );
+ wfGetDB( DB_REPLICA )->setFlag( DBO_DEBUG );
}
}
}
-$maintClass = 'MediaWikiShell';
+$maintClass = MediaWikiShell::class;
require_once RUN_MAINTENANCE_IF_MAIN;