aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/mason/api/command.lua22
1 files changed, 18 insertions, 4 deletions
diff --git a/lua/mason/api/command.lua b/lua/mason/api/command.lua
index ae889e6c..2521f52f 100644
--- a/lua/mason/api/command.lua
+++ b/lua/mason/api/command.lua
@@ -1,4 +1,5 @@
local _ = require "mason-core.functional"
+local platform = require "mason-core.platform"
local function Mason()
require("mason.ui").open()
@@ -83,7 +84,6 @@ local function MasonInstall(package_specifiers, opts)
opts = opts or {}
local Package = require "mason-core.package"
local registry = require "mason-registry"
- local is_headless = #vim.api.nvim_list_uis() == 0
local install_packages = _.map(function(pkg_specifier)
local package_name, version = Package.Parse(pkg_specifier)
@@ -96,7 +96,7 @@ local function MasonInstall(package_specifiers, opts)
}
end)
- if is_headless then
+ if platform.is_headless then
registry.refresh()
local valid_packages = filter_valid_packages(package_specifiers)
if #valid_packages ~= #package_specifiers then
@@ -185,14 +185,28 @@ local function MasonUpdate()
local notify = require "mason-core.notify"
local registry = require "mason-registry"
notify "Updating registries…"
- registry.update(vim.schedule_wrap(function(success, updated_registries)
+
+ ---@param success boolean
+ ---@param updated_registries RegistrySource[]
+ local function handle_result(success, updated_registries)
if success then
local count = #updated_registries
notify(("Successfully updated %d %s."):format(count, count == 1 and "registry" or "registries"))
else
notify(("Failed to update registries: %s"):format(updated_registries), vim.log.levels.ERROR)
end
- end))
+ end
+
+ if platform.is_headless then
+ local a = require "mason-core.async"
+ a.run_blocking(function()
+ local success, updated_registries = a.wait(registry.update)
+ a.scheduler()
+ handle_result(success, updated_registries)
+ end)
+ else
+ registry.update(_.scheduler_wrap(handle_result))
+ end
end
vim.api.nvim_create_user_command("MasonUpdate", MasonUpdate, {