aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/installer/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/mason-core/installer/init.lua')
-rw-r--r--lua/mason-core/installer/init.lua12
1 files changed, 9 insertions, 3 deletions
diff --git a/lua/mason-core/installer/init.lua b/lua/mason-core/installer/init.lua
index 9f150269..ee0e6397 100644
--- a/lua/mason-core/installer/init.lua
+++ b/lua/mason-core/installer/init.lua
@@ -64,13 +64,19 @@ function M.prepare_installer(context)
try(Result.pcall(fs.async.mkdirp, package_build_prefix))
context.cwd:set(package_build_prefix)
- return context.package.spec.install
+ if context.package:is_registry_spec() then
+ local registry_installer = require "mason-core.installer.registry"
+ return try(registry_installer.compile(context.handle.package.spec, context.opts))
+ else
+ return context.package.spec.install
+ end
end)
end
----@async
+---@generic T
---@param context InstallContext
----@param fn async fun(context: InstallContext)
+---@param fn fun(context: InstallContext): T
+---@return T
function M.exec_in_context(context, fn)
local thread = coroutine.create(function(...)
-- We wrap the function to allow it to be a spy instance (in which case it's not actually a function, but a