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

Reply via email to