996a290afd
To allow us to incrementally adopt more comprehensive linting rules, this pull request disables the previous behaviour of failing CI when any warnings were discovered. Instead, this modifies the previous warnings to be errors which will preserve the previous linting behaviour. As we enable new lint rules, they can be added as warnings which will gently nudge us towards fixing in related pull requests.
46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
const { quote } = require('shell-quote')
|
|
const { ESLint } = require('eslint')
|
|
|
|
const eslint = new ESLint()
|
|
|
|
/**
|
|
* Escape filenames to ensure that spaces and such aren't interpreted as
|
|
* separators.
|
|
*
|
|
* @param {string[]} filenames
|
|
* @returns {string[]}
|
|
*/
|
|
function escape(filenames) {
|
|
if (process.platform === 'win32') {
|
|
return filenames
|
|
}
|
|
|
|
return filenames.map((filename) => quote([filename]).replace(/\\@/g, '@'))
|
|
}
|
|
|
|
module.exports = {
|
|
'*.{js,jsx,mjs,ts,tsx,mts}': async (filenames) => {
|
|
const escapedFileNames = escape(filenames).join(' ')
|
|
const eslintFileNames = await Promise.all(
|
|
filenames.map(async (filename) => {
|
|
const ignored = await eslint.isPathIgnored(filename)
|
|
return ignored ? null : filename
|
|
})
|
|
)
|
|
|
|
return [
|
|
`prettier --with-node-modules --ignore-path .prettierignore --write ${escapedFileNames}`,
|
|
`eslint --no-ignore --fix ${eslintFileNames
|
|
.filter((filename) => filename !== null)
|
|
.map((filename) => {
|
|
return `"${filename}"`
|
|
})
|
|
.join(' ')}`,
|
|
`git add ${escapedFileNames}`,
|
|
]
|
|
},
|
|
'*.{json,md,mdx,css,html,yml,yaml,scss}': [
|
|
'prettier --with-node-modules --ignore-path .prettierignore --write',
|
|
],
|
|
'*.rs': ['cargo fmt --'],
|
|
}
|