mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 05:58:34 +01:00
171149b2a2
This change reduces the priority of the shipped phpcs configuration to allow for local overrides. This is beneficial in several situations: - when users wish to apply stricter or additional standards - when the integration team wishes to trial new rules
101 lines
3.1 KiB
JavaScript
101 lines
3.1 KiB
JavaScript
// This file is part of Moodle - http://moodle.org/
|
|
//
|
|
// Moodle is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Moodle is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
|
/* jshint node: true, browser: false */
|
|
/* eslint-env node */
|
|
|
|
/**
|
|
* @copyright 2021 Andrew Nicols
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
|
|
module.exports = grunt => {
|
|
|
|
/**
|
|
* Generate the PHPCS configuration.
|
|
*
|
|
* @param {Object} thirdPartyPaths
|
|
*/
|
|
const phpcsIgnore = (thirdPartyPaths) => {
|
|
const {toXML} = require('jstoxml');
|
|
|
|
const config = {
|
|
_name: 'ruleset',
|
|
_attrs: {
|
|
name: "MoodleCore",
|
|
},
|
|
_content: [
|
|
{
|
|
rule: {
|
|
_attrs: {
|
|
ref: './phpcs.xml.dist',
|
|
},
|
|
},
|
|
},
|
|
],
|
|
};
|
|
|
|
thirdPartyPaths.forEach(library => {
|
|
config._content.push({
|
|
'exclude-pattern': library,
|
|
});
|
|
});
|
|
|
|
grunt.file.write('phpcs.xml', toXML(config, {
|
|
header: true,
|
|
indent: ' ',
|
|
}) + "\n");
|
|
};
|
|
|
|
/**
|
|
* Generate ignore files (utilising thirdpartylibs.xml data)
|
|
*/
|
|
const handler = function() {
|
|
const path = require('path');
|
|
const ComponentList = require(path.join(process.cwd(), '.grunt', 'components.js'));
|
|
|
|
// An array of paths to third party directories.
|
|
const thirdPartyPaths = ComponentList.getThirdPartyPaths();
|
|
|
|
// Generate .eslintignore.
|
|
const eslintIgnores = [
|
|
'# Generated by "grunt ignorefiles"',
|
|
// Do not ignore the .grunt directory.
|
|
'!/.grunt',
|
|
|
|
// Ignore all yui/src meta directories and build directories.
|
|
'*/**/yui/src/*/meta/',
|
|
'*/**/build/',
|
|
].concat(thirdPartyPaths);
|
|
grunt.file.write('.eslintignore', eslintIgnores.join('\n') + '\n');
|
|
|
|
// Generate .stylelintignore.
|
|
const stylelintIgnores = [
|
|
'# Generated by "grunt ignorefiles"',
|
|
'**/yui/build/*',
|
|
'theme/boost/style/moodle.css',
|
|
'theme/classic/style/moodle.css',
|
|
'jsdoc/styles/*.css',
|
|
'admin/tool/componentlibrary/hugo/dist/css/docs.css',
|
|
].concat(thirdPartyPaths);
|
|
grunt.file.write('.stylelintignore', stylelintIgnores.join('\n') + '\n');
|
|
|
|
phpcsIgnore(thirdPartyPaths);
|
|
};
|
|
|
|
grunt.registerTask('ignorefiles', 'Generate ignore files for linters', handler);
|
|
|
|
return handler;
|
|
};
|