X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/maintenance/eval.php diff --git a/maintenance/eval.php b/maintenance/eval.php index 3cc1d16a..40d29ef8 100644 --- a/maintenance/eval.php +++ b/maintenance/eval.php @@ -1,6 +1,5 @@ 0 ) { - $wgDebugLogFile = '/dev/stdout'; + LoggerFactory::registerProvider( new ConsoleSpi ); + // Some services hold Logger instances in object properties + MediaWikiServices::resetGlobalInstance(); } if ( $d > 1 ) { - $lb = wfGetLB(); - foreach ( $lb->mServers as $i => $server ) { - $lb->mServers[$i]['flags'] |= DBO_DEBUG; - } - } - if ( $d > 2 ) { - $wgDebugFunctionEntry = true; + wfGetDB( DB_MASTER )->setFlag( DBO_DEBUG ); + wfGetDB( DB_REPLICA )->setFlag( DBO_DEBUG ); } } -if ( function_exists( 'readline_add_history' ) - && posix_isatty( 0 /*STDIN*/ ) ) -{ - $useReadline = true; -} else { - $useReadline = false; -} +$__useReadline = function_exists( 'readline_add_history' ) + && Maintenance::posix_isatty( 0 /*STDIN*/ ); -if ( $useReadline ) { - $historyFile = isset( $_ENV['HOME'] ) ? +if ( $__useReadline ) { + $__historyFile = isset( $_ENV['HOME'] ) ? "{$_ENV['HOME']}/.mweval_history" : "$IP/maintenance/.mweval_history"; - readline_read_history( $historyFile ); + readline_read_history( $__historyFile ); } -while ( ( $line = Maintenance::readconsole() ) !== false ) { - if ( $useReadline ) { - readline_add_history( $line ); - readline_write_history( $historyFile ); +$__e = null; // PHP exception +while ( ( $__line = Maintenance::readconsole() ) !== false ) { + if ( $__e && !preg_match( '/^(exit|die);?$/', $__line ) ) { + // Internal state may be corrupted or fatals may occur later due + // to some object not being set. Don't drop out of eval in case + // lines were being pasted in (which would then get dumped to the shell). + // Instead, just absorb the remaning commands. Let "exit" through per DWIM. + echo "Exception was thrown before; please restart eval.php\n"; + continue; } - $val = eval( $line . ";" ); - if ( is_null( $val ) ) { + if ( $__useReadline ) { + readline_add_history( $__line ); + readline_write_history( $__historyFile ); + } + try { + $__val = eval( $__line . ";" ); + } catch ( Exception $__e ) { + echo "Caught exception " . get_class( $__e ) . + ": {$__e->getMessage()}\n" . $__e->getTraceAsString() . "\n"; + continue; + } + if ( wfIsHHVM() || is_null( $__val ) ) { echo "\n"; - } elseif ( is_string( $val ) || is_numeric( $val ) ) { - echo "$val\n"; + } elseif ( is_string( $__val ) || is_numeric( $__val ) ) { + echo "$__val\n"; } else { - var_dump( $val ); + var_dump( $__val ); } } print "\n"; - -