|
|
|
@ -2,34 +2,36 @@ local M = {}
|
|
|
|
|
|
|
|
|
|
-- any cases where name of package is different from the binary name
|
|
|
|
|
local name_to_bin = {
|
|
|
|
|
["csharp-language-server"] = "csharp-ls",
|
|
|
|
|
["python-lsp-server"] = "pylsp",
|
|
|
|
|
["docker-compose-language-service"] = "docker-compose-langserver",
|
|
|
|
|
['csharp-language-server'] = 'csharp-ls',
|
|
|
|
|
['python-lsp-server'] = 'pylsp',
|
|
|
|
|
['docker-compose-language-service'] = 'docker-compose-langserver',
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
M.install = function(ensure_installed)
|
|
|
|
|
-- Allow for passing in a single string
|
|
|
|
|
if type(ensure_installed) == "string" then
|
|
|
|
|
ensure_installed = { ensure_installed }
|
|
|
|
|
end
|
|
|
|
|
-- Allow for passing in a single string
|
|
|
|
|
if type(ensure_installed) == 'string' then
|
|
|
|
|
ensure_installed = { ensure_installed }
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Function to check if the executable exists in the PATH
|
|
|
|
|
local function executable_exists(name)
|
|
|
|
|
if name_to_bin[name] then
|
|
|
|
|
return vim.fn.executable(name) == 1 or vim.fn.executable(name_to_bin[name]) == 1
|
|
|
|
|
end
|
|
|
|
|
return vim.fn.executable(name) == 1
|
|
|
|
|
end
|
|
|
|
|
-- Function to check if the executable exists in the PATH
|
|
|
|
|
local function executable_exists(name)
|
|
|
|
|
if name_to_bin[name] then
|
|
|
|
|
return vim.fn.executable(name_to_bin[name]) == 1
|
|
|
|
|
end
|
|
|
|
|
return vim.fn.executable(name) == 1
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local registry = require("mason-registry")
|
|
|
|
|
registry.refresh(function()
|
|
|
|
|
for _, pkg_name in ipairs(ensure_installed) do
|
|
|
|
|
local pkg = registry.get_package(pkg_name)
|
|
|
|
|
if not executable_exists(pkg_name) and not pkg:is_installed() then
|
|
|
|
|
pkg:install()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
local registry = require 'mason-registry'
|
|
|
|
|
registry.refresh(function()
|
|
|
|
|
for _, pkg_name in ipairs(ensure_installed) do
|
|
|
|
|
if not executable_exists(pkg_name) then
|
|
|
|
|
local pkg = registry.get_package(pkg_name)
|
|
|
|
|
if not pkg:is_installed() then
|
|
|
|
|
pkg:install()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return M
|
|
|
|
|
return M
|
|
|
|
|