* @ingroup Maintenance */ use MediaWiki\Maintenance\Maintenance; use MediaWiki\SyntaxHighlight\Pygmentize; use MediaWiki\SyntaxHighlight\PygmentsException; use Wikimedia\StaticArrayWriter; $IP = getenv( 'MW_INSTALL_PATH' ) ?: __DIR__ . '/../../..'; require_once "$IP/maintenance/Maintenance.php"; class UpdateLexerList extends Maintenance { public function __construct() { parent::__construct(); $this->requireExtension( 'SyntaxHighlight' ); $this->addDescription( 'Update list of lexers supported by SyntaxHighlight' ); } public function execute() { $header = 'Generated by ' . basename( __FILE__ ); try { $data = Pygmentize::fetchLexers(); } catch ( PygmentsException $e ) { $this->fatalError( "Error when getting lexers:\n" . $e->getMessage() ); } $writer = new StaticArrayWriter(); $code = $writer->create( $data, $header ); file_put_contents( __DIR__ . '/../SyntaxHighlight.lexers.php', $code ); $this->output( "Updated language list written to SyntaxHighlight.lexers.php\n" ); } } $maintClass = UpdateLexerList::class; require_once RUN_MAINTENANCE_IF_MAIN;