Gergő Tisza has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/355062 )
Change subject: Create extension files ...................................................................... Create extension files Needs T153256 to be fixed to work properly. Bug: T111731 Change-Id: Id29e0ced1ddaf604c7b573f3673d090c3e5ac3c1 Depends-On: Ifb01b454ec2fbe5f9ecb375a12b0e7e8a884ee22 --- A .eslintrc.json A .gitignore M .gitreview A .stylelintrc A Gruntfile.js A README.md A composer.json A extension.json A i18n/en.json A i18n/qqq.json A package.json A phpcs.xml A src/Hooks.php A src/WhoopsRenderer.php 14 files changed, 167 insertions(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Whoops refs/changes/62/355062/1 diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..4843240 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,10 @@ +{ + "extends": "wikimedia", + "env": { + "browser": true, + "jquery": true + }, + "globals": { + "mediaWiki": false + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..59a2a36 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.*.swp +*~ +/.project +/composer.lock +/vendor +/node_modules diff --git a/.gitreview b/.gitreview index 49667b8..a76fdd7 100644 --- a/.gitreview +++ b/.gitreview @@ -2,5 +2,5 @@ host=gerrit.wikimedia.org port=29418 project=mediawiki/extensions/Whoops.git -defaultbranch=master +track=1 defaultrebase=0 diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 0000000..2c90730 --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,3 @@ +{ + "extends": "stylelint-config-wikimedia" +} diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..24faaef --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,40 @@ +/* eslint-env node */ +module.exports = function ( grunt ) { + var conf = grunt.file.readJSON( 'extension.json' ); + + grunt.loadNpmTasks( 'grunt-banana-checker' ); + grunt.loadNpmTasks( 'grunt-eslint' ); + grunt.loadNpmTasks( 'grunt-jsonlint' ); + grunt.loadNpmTasks( 'grunt-stylelint' ); + + grunt.initConfig( { + eslint: { + all: [ + '**/*.js', + '!node_modules/**', + '!vendor/**' + ] + }, + stylelint: { + options: { + syntax: 'less' + }, + all: [ + '**/*.{css,less}', + '!node_modules/**', + '!vendor/**' + ] + }, + banana: conf.MessagesDirs, + jsonlint: { + all: [ + '**/*.json', + '!node_modules/**', + '!vendor/**' + ] + } + } ); + + grunt.registerTask( 'test', [ 'eslint', 'stylelint', 'jsonlint', 'banana' ] ); + grunt.registerTask( 'default', 'test' ); +}; diff --git a/README.md b/README.md new file mode 100644 index 0000000..d8cab2d --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +This extensions installs [Whoops](https://github.com/filp/whoops) as the error +renderer for MediaWiki. \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..a6f48a6 --- /dev/null +++ b/composer.json @@ -0,0 +1,16 @@ +{ + "require": { + "filp/whoops": "~2.1" + }, + "require-dev": { + "jakub-onderka/php-parallel-lint": "0.9.2", + "mediawiki/mediawiki-codesniffer": "0.7.2" + }, + "scripts": { + "fix": "phpcbf", + "test": [ + "parallel-lint . --exclude vendor", + "phpcs -p -s" + ] + } +} diff --git a/extension.json b/extension.json new file mode 100644 index 0000000..495dbdf --- /dev/null +++ b/extension.json @@ -0,0 +1,27 @@ +{ + "name": "Whoops", + "version": "0.1.0", + "author": [ + "Gergő Tisza" + ], + "url": "https://www.mediawiki.org/wiki/Extension:Whoops", + "descriptionmsg": "whoops-desc", + "license-name": "MIT", + "type": "other", + "AutoloadClasses": { + "MediaWiki\\Extensions\\Whoops\\Hooks": "src/Hooks.php", + "MediaWiki\\Extensions\\Whoops\\WhoopsRenderer": "src/WhoopsRenderer.php" + }, + "Hooks": { + "MediaWikiServices": [ + "MediaWiki\\Extensions\\Whoops\\Hooks::onMediaWikiServices" + ] + }, + "MessagesDirs": { + "Whoops": [ + "i18n" + ] + }, + "load_composer_autoloader": true, + "manifest_version": 1 +} diff --git a/i18n/en.json b/i18n/en.json new file mode 100644 index 0000000..4f846fc --- /dev/null +++ b/i18n/en.json @@ -0,0 +1,3 @@ +{ + "whoops-desc": "Displays fancy stack traces on errors using Whoops." +} diff --git a/i18n/qqq.json b/i18n/qqq.json new file mode 100644 index 0000000..d12b8b4 --- /dev/null +++ b/i18n/qqq.json @@ -0,0 +1,3 @@ +{ + "whoops-desc": "{{desc|name=Whoops|url=https://www.mediawiki.org/wiki/Extension:Whoops}}" +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..369d09c --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "private": true, + "scripts": { + "test": "grunt test" + }, + "devDependencies": { + "eslint-config-wikimedia": "0.3.0", + "grunt": "1.0.1", + "grunt-banana-checker": "0.5.0", + "grunt-eslint": "19.0.0", + "grunt-jsonlint": "1.1.0", + "grunt-stylelint": "0.6.0", + "stylelint-config-wikimedia": "0.3.0" + } +} diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 0000000..d81a292 --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<ruleset> + <rule ref="vendor/mediawiki/mediawiki-codesniffer/MediaWiki"/> + <file>.</file> + <arg name="extensions" value="php,php5,inc"/> + <arg name="encoding" value="utf8"/> + <exclude-pattern>vendor</exclude-pattern> +</ruleset> diff --git a/src/Hooks.php b/src/Hooks.php new file mode 100644 index 0000000..5c14879 --- /dev/null +++ b/src/Hooks.php @@ -0,0 +1,13 @@ +<?php + +namespace MediaWiki\Extensions\Whoops; + +use MediaWiki\MediaWikiServices; + +class Hooks { + public static function onMediaWikiServices( MediaWikiServices $services ) { + $services->redefineService( 'ExceptionRenderer', function ( MediaWikiServices $services ) { + return new WhoopsRenderer(); + } ); + } +} diff --git a/src/WhoopsRenderer.php b/src/WhoopsRenderer.php new file mode 100644 index 0000000..b3e08fe --- /dev/null +++ b/src/WhoopsRenderer.php @@ -0,0 +1,20 @@ +<?php + +namespace MediaWiki\Extensions\Whoops; + +use MediaWiki\Exception\StandardRenderer; +use Whoops\Handler\PrettyPageHandler; +use Whoops\Run; +use Wikimedia\Rdbms\DBConnectionError; + +class WhoopsRenderer extends StandardRenderer { + public function doOutput( $e, $mode, $eNew = null ) { + if ( $mode === self::AS_PRETTY && !$eNew && !( $e instanceof DBConnectionError ) ) { + $whoops = new Run(); + $whoops->pushHandler( new PrettyPageHandler() ); + $whoops->handleException( $e ); + } else { + parent::doOutput( $e, $mode, $eNew ); + } + } +} -- To view, visit https://gerrit.wikimedia.org/r/355062 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id29e0ced1ddaf604c7b573f3673d090c3e5ac3c1 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Whoops Gerrit-Branch: master Gerrit-Owner: Gergő Tisza <gti...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits