116 lines
2.5 KiB
Lua
116 lines
2.5 KiB
Lua
local M = {}
|
|
|
|
local util = require("go.utils")
|
|
local log = util.log
|
|
local health = require("health")
|
|
local tools = require("go.install").tools
|
|
|
|
local start = health.report_start
|
|
local ok = health.report_ok
|
|
local error = health.report_error
|
|
local warn = health.report_warn
|
|
local info = health.report_info
|
|
local vfn = vim.fn
|
|
|
|
local function binary_check()
|
|
health.report_start("Binaries")
|
|
local no_err = true
|
|
local go_bin = _GO_NVIM_CFG.go or "go"
|
|
if vfn.executable(go_bin) == 1 then
|
|
info(go_bin .. " installed.")
|
|
else
|
|
error(go_bin .. " is not installed.")
|
|
no_err = false
|
|
end
|
|
for _, val in ipairs(tools) do
|
|
log(val)
|
|
if vfn.executable(val) == 1 then
|
|
info("Tool installed: " .. val)
|
|
else
|
|
warn("Missing tool: " .. val)
|
|
end
|
|
end
|
|
if no_err then
|
|
ok("All binaries installed")
|
|
end
|
|
|
|
if vfn.executable('sed') == 1 then
|
|
info("sed installed.")
|
|
else
|
|
warn("sed is not installed.")
|
|
end
|
|
|
|
if vfn.executable('sed') == 1 then
|
|
info("sed installed.")
|
|
else
|
|
warn("sed is not installed.")
|
|
end
|
|
|
|
if vfn.executable('curl') == 1 then
|
|
info("curl installed.")
|
|
else
|
|
warn("curl is not installed.")
|
|
end
|
|
end
|
|
|
|
local function plugin_check()
|
|
start("Go Plugin Check")
|
|
|
|
local plugins = {
|
|
"lspconfig",
|
|
"nvim-treesitter",
|
|
"guihua",
|
|
"nvim-dap-virtual-text",
|
|
"telescope",
|
|
}
|
|
local any_warn = false
|
|
local ts_installed = false
|
|
for _, plugin in ipairs(plugins) do
|
|
local pi = util.load_plugin(plugin)
|
|
if pi ~= nil then
|
|
ok(string.format("%s: plugin is installed", plugin))
|
|
if plugin == "nvim-treesitter" then
|
|
ts_installed = true
|
|
end
|
|
else
|
|
any_warn = true
|
|
warn(string.format("%s: not installed/loaded", plugin))
|
|
end
|
|
end
|
|
if ts_installed then
|
|
local _info = require("nvim-treesitter.info").installed_parsers()
|
|
if vim.tbl_contains(_info, "go") then
|
|
ok("nvim-treesitter-go is installed")
|
|
else
|
|
warn("nvim-treesitter-go is not installed, Please run TSInstall go to install")
|
|
any_warn = true
|
|
end
|
|
end
|
|
plugins = {
|
|
["nvim-dap"] = "dap",
|
|
["nvim-dap-ui"] = "dapui",
|
|
}
|
|
for name, req in pairs(plugins) do
|
|
local pi = util.load_plugin(name, req)
|
|
if pi ~= nil then
|
|
ok(string.format("%s: plugin is installed", name))
|
|
else
|
|
any_warn = true
|
|
warn(string.format("%s: not installed/loaded", name))
|
|
end
|
|
end
|
|
|
|
if any_warn then
|
|
warn("Not all plugin installed")
|
|
else
|
|
ok("All plugin installed")
|
|
end
|
|
end
|
|
|
|
function M.check()
|
|
binary_check()
|
|
plugin_check()
|
|
end
|
|
|
|
return M
|