1
1
mirror of https://github.com/primer/css.git synced 2024-09-21 05:39:15 +03:00
css/lib/stylelint-todo.js
2019-10-23 09:27:39 -07:00

39 lines
1.1 KiB
JavaScript

const semver = require('semver')
const stylelint = require('stylelint')
const ruleName = 'primer-css/TODO'
const pattern = /\bTODO@([^:]+):\s+(.+)$/
const messages = stylelint.utils.ruleMessages(ruleName, {
rejected: message => message
})
module.exports = stylelint.createPlugin(ruleName, (enabled, options = {}) => {
const {currentVersion} = options
if (!currentVersion) {
// eslint-disable-next-line no-console
console.warn(`No "currentVersion" supplied to ${ruleName}; bailing`)
return () => null
}
let match
return (root, result) => {
root.walkComments(node => {
if ((match = node.text.match(pattern))) {
// eslint-disable-next-line no-unused-vars
const [substr, todoVersion, message] = match
if (semver.lte(todoVersion, currentVersion)) {
stylelint.utils.report({
message: messages.rejected(
`Unresolved TODO comment: "${message}" (expected to be resolved in "${todoVersion}")`
),
node,
result,
ruleName
})
}
}
})
}
})