diff --git a/README.md b/README.md index f739ee5..09002f9 100644 --- a/README.md +++ b/README.md @@ -45,5 +45,6 @@ - [x] [pylint](https://github.com/PyCQA/pylint) - [ ] [rubocop](https://github.com/rubocop/rubocop) - [ ] [shellcheck](https://github.com/koalaman/shellcheck) +- [ ] [stylelint](https://stylelint.io/) ## License MIT diff --git a/lua/guard-collection/linter/init.lua b/lua/guard-collection/linter/init.lua index 3c6227e..dcf4ba2 100644 --- a/lua/guard-collection/linter/init.lua +++ b/lua/guard-collection/linter/init.lua @@ -10,4 +10,5 @@ return { rubocop = require('guard-collection.linter.rubocop'), selene = require('guard-collection.linter.selene'), shellcheck = require('guard-collection.linter.shellcheck'), + stylelint = require('guard-collection.linter.stylelint'), } diff --git a/lua/guard-collection/linter/stylelint.lua b/lua/guard-collection/linter/stylelint.lua new file mode 100644 index 0000000..cf60fb1 --- /dev/null +++ b/lua/guard-collection/linter/stylelint.lua @@ -0,0 +1,37 @@ +local lint = require('guard.lint') + +return { + cmd = 'stylelint', + args = { '--formatter', 'json', '--stdin', '--stdin-filename' }, + stdin = true, + fname = true, + fine = { + '.stylelintrc', + '.stylelintrc.cjs', + '.stylelintrc.js', + '.stylelintrc.json', + '.stylelintrc.yaml', + '.stylelintrc.yml', + 'stylelint.config.cjs', + 'stylelint.config.mjs', + 'stylelint.config.js', + }, + parse = lint.from_json({ + get_diagnostics = function(...) + return vim.json.decode(...)[1].warnings + end, + attributes = { + lnum = 'line', + end_lnum = 'endLine', + col = 'column', + end_col = 'endColumn', + message = 'text', + code = 'rule', + }, + severities = { + warning = lint.severities.warning, + error = lint.severities.error, + }, + source = 'stylelint', + }), +}