Files
mason-conform.nvim/lua/mason-conform/install.lua
T
2024-02-24 10:42:42 +01:00

61 lines
1.7 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