mirror of
https://github.com/pojokcodeid/nvim-lazy.git
synced 2025-06-21 16:39:04 +02:00
56 lines
1.5 KiB
Lua
56 lines
1.5 KiB
Lua
local registry = require("mason-registry")
|
|
|
|
local M = {}
|
|
|
|
local function resolve_package(mason_package_name)
|
|
local Optional = require("mason-core.optional")
|
|
|
|
local ok, pkg = pcall(registry.get_package, mason_package_name)
|
|
if ok then
|
|
return Optional.of_nilable(pkg)
|
|
end
|
|
end
|
|
|
|
local function install_package(pkg, version)
|
|
local linter_name = pkg.name
|
|
|
|
vim.notify(("[mason-conform] installing %s"):format(linter_name))
|
|
|
|
return pkg:install({ version = version }):once(
|
|
"closed",
|
|
vim.schedule_wrap(function()
|
|
if pkg:is_installed() then
|
|
vim.notify(("[mason-conform] %s was successfully installed"):format(linter_name))
|
|
else
|
|
vim.notify(
|
|
("[mason-conform] failed to install %s. Installation logs are available in :Mason and :MasonLog"):format(
|
|
linter_name
|
|
),
|
|
vim.log.levels.ERROR
|
|
)
|
|
end
|
|
end)
|
|
)
|
|
end
|
|
|
|
function M.try_install(mason_package_name)
|
|
local Package = require("mason-core.package")
|
|
local package_name, version = Package.Parse(mason_package_name)
|
|
|
|
resolve_package(package_name)
|
|
:if_present(function(pkg)
|
|
if not pkg:is_installed() then
|
|
install_package(pkg, version)
|
|
end
|
|
end)
|
|
:if_not_present(function()
|
|
vim.notify(
|
|
("[mason-conform] Formatter %q is not a valid entry in ensure_installed. Make sure to only provide valid formatter names."):format(
|
|
package_name
|
|
),
|
|
vim.log.levels.WARN
|
|
)
|
|
end)
|
|
end
|
|
|
|
return M
|