3 files changed,
52 insertions(+),
29 deletions(-)
Author:
Smirnov Oleksandr
ss2316544@gmail.com
Committed by:
GitHub
noreply@github.com
Committed at:
2023-07-17 18:31:21 +0300
Parent:
03cabf6
M
autoload/health/gopher.vim
@@ -1,3 +1,3 @@
function! health#gopher#check() - lua require"gopher.health".check() + lua require("gopher.health").check() endfunction
M
lua/gopher/health.lua
@@ -1,44 +1,67 @@
-local c = require("gopher.config").config.commands +local health = {} +local cmd = require("gopher.config").config.commands +local u = require "gopher._utils.health" -local requried_for_work_msg = "Gopher.nvim will not work without it!" -local M = { - _required = { - plugins = { - { lib = "plenary", help = requried_for_work_msg }, - { lib = "nvim-treesitter", help = requried_for_work_msg }, - { lib = "dap", help = "Required for set upping debugger" }, +local _h = vim.health or require "health" +local h = { + start = _h.start or _h.report_start, + ok = _h.ok or _h.report_ok, + warn = _h.warn or _h.report_warn, + error = _h.error or _h.report_error, + info = _h.info or _h.report_info, +} + +local deps = { + plugin = { + { lib = "dap", msg = "required for `gopher.dap`", optional = true }, + { lib = "plenary", msg = "required for everyting in gopher.nvim", optional = false }, + { lib = "nvim-treesitter", msg = "required for everyting in gopher.nvim", optional = false }, + }, + bin = { + { + bin = cmd.go, + msg = "required for :GoGet, :GoMod, :GoGenerate, :GoWork, :GoInstallDeps", + optional = false, }, - binarys = { - { bin = c.go, help = "required for GoMod, GoGet, GoGenerate command" }, - { bin = c.gomodifytags, help = "required for modify struct tags" }, - { bin = c.impl, help = "required for interface implementing" }, - { bin = c.gotests, help = "required for test(s) generation" }, - { bin = c.dlv, help = "required for debugger(nvim-dap)" }, + { bin = cmd.gomodifytags, msg = "required for :GoTagAdd, :GoTagRm", optional = false }, + { bin = cmd.impl, msg = "required for :GoImpl", optional = false }, + { bin = cmd.iferr, msg = "required for :GoIfErr", optional = false }, + { + bin = cmd.gotests, + msg = "required for :GoTestAdd, :GoTestsAll, :GoTestsExp", + optional = false, }, + { bin = cmd.dlv, msg = "required for debugging, (nvim-dap, `gopher.dap`)", optional = true }, }, } -function M.check() - local health = vim.health or require "health" - local u = require "gopher._utils._health" - - health.report_start "Required plugins" - for _, plugin in ipairs(M._required.plugins) do +function health.check() + h.start "required plugins" + for _, plugin in ipairs(deps.plugin) do if u.lualib_is_found(plugin.lib) then - health.report_ok(plugin.lib .. " installed.") + h.ok(plugin.lib .. " installed") else - health.report_error(plugin.lib .. " not found. " .. plugin.help) + if plugin.optional then + h.warn(plugin.lib .. " not found, " .. plugin.msg) + else + h.error(plugin.lib .. " not found, " .. plugin.msg) + end end end - health.report_start "Required go tools" - for _, binary in ipairs(M._required.binarys) do - if u.binary_is_found(binary.bin) then - health.report_ok(binary.bin .. " installed") + h.start "required binaries" + h.info "all those binaries can be installed by `:GoInstallDeps`" + for _, bin in ipairs(deps.bin) do + if u.binary_is_found(bin.bin) then + h.ok(bin.bin .. " installed") else - health.report_warn(binary.bin .. " is not installed but " .. binary.help) + if bin.optional then + h.warn(bin.bin .. " not found, " .. bin.msg) + else + h.error(bin.bin .. " not found, " .. bin.msg) + end end end end -return M +return health