un -> in
[lhc/web/wiklou.git] / Gruntfile.js
index 868fa4a..a08db5c 100644 (file)
@@ -2,6 +2,7 @@
 module.exports = function ( grunt ) {
        grunt.loadNpmTasks( 'grunt-contrib-copy' );
        grunt.loadNpmTasks( 'grunt-contrib-jshint' );
+       grunt.loadNpmTasks( 'grunt-stylelint' );
        grunt.loadNpmTasks( 'grunt-contrib-watch' );
        grunt.loadNpmTasks( 'grunt-banana-checker' );
        grunt.loadNpmTasks( 'grunt-jscs' );
@@ -12,54 +13,44 @@ module.exports = function ( grunt ) {
                wgScriptPath = process.env.MW_SCRIPT_PATH,
                karmaProxy = {};
 
-       karmaProxy[wgScriptPath] = wgServer + wgScriptPath;
+       karmaProxy[ wgScriptPath ] = wgServer + wgScriptPath;
 
        grunt.initConfig( {
                jshint: {
                        options: {
                                jshintrc: true
                        },
-                       all: [
-                               '*.js',
-                               '{includes,languages,resources,tests}/**/*.js'
-                       ]
+                       all: '.'
                },
                jscs: {
-                       all: [
-                               '<%= jshint.all %>',
-                               // Auto-generated file with JSON (double quotes)
-                               '!tests/qunit/data/mediawiki.jqueryMsg.data.js',
-                               // Skip functions are stored as script files but wrapped in a function when
-                               // executed. node-jscs trips on the would-be "Illegal return statement".
-                               '!resources/src/*-skip.js'
-
-                       // Exclude all files ignored by jshint
-                       ].concat( grunt.file.read( '.jshintignore' ).split( '\n' ).reduce( function ( patterns, pattern ) {
-                               // Filter out empty lines
-                               if ( pattern.length && pattern[0] !== '#' ) {
-                                       patterns.push( '!' + pattern );
-                               }
-                               return patterns;
-                       }, [] ) )
+                       all: '.'
                },
                jsonlint: {
                        all: [
                                '.jscsrc',
-                               '{languages,maintenance,resources}/**/*.json',
-                               'package.json'
+                               '**/*.json',
+                               '!{docs/js,extensions,node_modules,skins,vendor}/**'
                        ]
                },
                banana: {
+                       options: {
+                               disallowBlankTranslations: false
+                       },
                        core: 'languages/i18n/',
                        api: 'includes/api/i18n/',
                        installer: 'includes/installer/i18n/'
                },
+               stylelint: {
+                       options: {
+                               syntax: 'less'
+                       },
+                       src: '{resources/src/*,mw-config/**}/*.{css,less}'
+               },
                watch: {
                        files: [
-                               '<%= jscs.all %>',
-                               '<%= jsonlint.all %>',
-                               '.jshintignore',
-                               '.jshintrc'
+                               '.{stylelintrc,jscsrc,jshintignore,jshintrc}',
+                               '**/*',
+                               '!{docs,extensions,node_modules,skins,vendor}/**'
                        ],
                        tasks: 'test'
                },
@@ -72,8 +63,9 @@ module.exports = function ( grunt ) {
                                        included: true,
                                        served: false
                                } ],
+                               logLevel: 'DEBUG',
                                frameworks: [ 'qunit' ],
-                               reporters: [ 'dots' ],
+                               reporters: [ 'progress' ],
                                singleRun: true,
                                autoWatch: false,
                                // Some tests in extensions don't yield for more than the default 10s (T89075)
@@ -106,14 +98,14 @@ module.exports = function ( grunt ) {
                }
                if ( !process.env.MW_SCRIPT_PATH ) {
                        grunt.log.error( 'Environment variable MW_SCRIPT_PATH must be set.\n' +
-                               'Set this like $wgScriptPath, e.g. "/w"');
+                               'Set this like $wgScriptPath, e.g. "/w"' );
                }
                return !!( process.env.MW_SERVER && process.env.MW_SCRIPT_PATH );
        } );
 
-       grunt.registerTask( 'lint', ['jshint', 'jscs', 'jsonlint', 'banana'] );
+       grunt.registerTask( 'lint', [ 'jshint', 'jscs', 'jsonlint', 'banana', 'stylelint' ] );
        grunt.registerTask( 'qunit', [ 'assert-mw-env', 'karma:main' ] );
 
-       grunt.registerTask( 'test', ['lint'] );
+       grunt.registerTask( 'test', [ 'lint' ] );
        grunt.registerTask( 'default', 'test' );
 };