diff --git a/README.md b/README.md index 3e04acb..b4f3fa8 100644 --- a/README.md +++ b/README.md @@ -23,10 +23,10 @@ ## ✅ TODO -- [ ] health checks: check merge conflicts async - - [ ] unsupported props or props from other managers - - [ ] other packages still in site? - - [ ] other package manager artifacts still present? compiled etc +- [x] health checks: check merge conflicts async + - [x] unsupported props or props from other managers + - [x] other packages still in site? + - [x] other package manager artifacts still present? compiled etc - [ ] fix plugin details - [ ] show disabled plugins (strikethrough?) - [ ] log file diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua new file mode 100644 index 0000000..612736d --- /dev/null +++ b/lua/lazy/health.lua @@ -0,0 +1,57 @@ +local Util = require("lazy.util") +local Config = require("lazy.core.config") + +local M = {} + +function M.check() + vim.health.report_start("lazy.nvim") + + local existing = false + Util.ls(vim.fn.stdpath("data") .. "/site/pack/", function(path) + existing = true + vim.health.report_warn("found existing packages at `" .. path .. "`") + end) + if not existing then + vim.health.report_ok("no existing packages found by other package managers") + end + + local packer_compiled = vim.fn.stdpath("config") .. "/plugin/packer_compiled.lua" + if vim.loop.fs_stat(packer_compiled) then + vim.health.report_error("please remove the file `" .. packer_compiled .. "`") + else + vim.health.report_ok("packer_compiled.lua not found") + end + + local valid = { + 1, + "name", + "uri", + "enabled", + "lazy", + "dev", + "dependencies", + "init", + "config", + "build", + "branch", + "tag", + "commit", + "version", + "pin", + "cmd", + "event", + "keys", + "ft", + "dir", + "_", + } + for _, plugin in pairs(Config.plugins) do + for key in pairs(plugin) do + if not vim.tbl_contains(valid, key) then + vim.health.report_warn("{" .. plugin.name .. "}: unknown key <" .. key .. ">") + end + end + end +end + +return M