aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-07-13 16:30:51 +0200
committerGitHub <noreply@github.com>2022-07-13 14:30:51 +0000
commit828db98d7803e372b7437f754a365658a45a3cc2 (patch)
tree21fedb532db91fa2a4f85fcbb17815c707c13f3a
parenttests: add some InstallHandle tests (#67) (diff)
downloadmason-828db98d7803e372b7437f754a365658a45a3cc2.tar
mason-828db98d7803e372b7437f754a365658a45a3cc2.tar.gz
mason-828db98d7803e372b7437f754a365658a45a3cc2.tar.bz2
mason-828db98d7803e372b7437f754a365658a45a3cc2.tar.lz
mason-828db98d7803e372b7437f754a365658a45a3cc2.tar.xz
mason-828db98d7803e372b7437f754a365658a45a3cc2.tar.zst
mason-828db98d7803e372b7437f754a365658a45a3cc2.zip
refactor(api): change signatures to accept list of packages (#68)
-rw-r--r--lua/mason/api/command.lua20
-rw-r--r--tests/mason/api/command_spec.lua6
2 files changed, 16 insertions, 10 deletions
diff --git a/lua/mason/api/command.lua b/lua/mason/api/command.lua
index 90292994..6e20a449 100644
--- a/lua/mason/api/command.lua
+++ b/lua/mason/api/command.lua
@@ -77,13 +77,14 @@ local function join_handles(handles)
end)
end
-local function MasonInstall(opts)
+---@param package_specifiers string[]
+local function MasonInstall(package_specifiers)
local Package = require "mason-core.package"
local registry = require "mason-registry"
- local valid_packages = filter_valid_packages(opts.fargs)
+ local valid_packages = filter_valid_packages(package_specifiers)
local is_headless = #vim.api.nvim_list_uis() == 0
- if is_headless and #valid_packages ~= #opts.fargs then
+ if is_headless and #valid_packages ~= #package_specifiers then
-- When executing in headless mode we don't allow any of the provided packages to be invalid.
-- This is to avoid things like scripts silently not erroring even if they've provided one or more invalid packages.
return vim.cmd [[1cq]]
@@ -105,15 +106,18 @@ local function MasonInstall(opts)
end
end
-vim.api.nvim_create_user_command("MasonInstall", MasonInstall, {
+vim.api.nvim_create_user_command("MasonInstall", function(opts)
+ MasonInstall(opts.fargs)
+end, {
desc = "Install one or more packages.",
nargs = "+",
complete = "custom,v:lua.mason_completion.available_package_completion",
})
-local function MasonUninstall(opts)
+---@param package_names string[]
+local function MasonUninstall(package_names)
local registry = require "mason-registry"
- local valid_packages = filter_valid_packages(opts.fargs)
+ local valid_packages = filter_valid_packages(package_names)
if #valid_packages > 0 then
_.each(function(package_name)
local pkg = registry.get_package(package_name)
@@ -123,7 +127,9 @@ local function MasonUninstall(opts)
end
end
-vim.api.nvim_create_user_command("MasonUninstall", MasonUninstall, {
+vim.api.nvim_create_user_command("MasonUninstall", function(opts)
+ MasonUninstall(opts.fargs)
+end, {
desc = "Uninstall one or more packages.",
nargs = "+",
complete = "custom,v:lua.mason_completion.installed_package_completion",
diff --git a/tests/mason/api/command_spec.lua b/tests/mason/api/command_spec.lua
index 06b2e5db..6e7a4257 100644
--- a/tests/mason/api/command_spec.lua
+++ b/tests/mason/api/command_spec.lua
@@ -27,7 +27,7 @@ describe(":MasonInstall", function()
local dummy = registry.get_package "dummy"
local dummy2 = registry.get_package "dummy2"
spy.on(Pkg, "install")
- api.MasonInstall { fargs = { "dummy@1.0.0", "dummy2" } }
+ api.MasonInstall { "dummy@1.0.0", "dummy2" }
assert.spy(Pkg.install).was_called(2)
assert.spy(Pkg.install).was_called_with(match.is_ref(dummy), { version = "1.0.0" })
assert
@@ -41,7 +41,7 @@ describe(":MasonInstall", function()
async_test(function()
local dummy = registry.get_package "dummy"
spy.on(dummy, "install")
- api.MasonInstall { fargs = { "dummy" } }
+ api.MasonInstall { "dummy" }
local win = vim.api.nvim_get_current_win()
local buf = vim.api.nvim_win_get_buf(win)
assert.equals("mason.nvim", vim.api.nvim_buf_get_option(buf, "filetype"))
@@ -56,7 +56,7 @@ describe(":MasonUninstall", function()
local dummy = registry.get_package "dummy"
local dummy2 = registry.get_package "dummy"
spy.on(Pkg, "uninstall")
- api.MasonUninstall { fargs = { "dummy", "dummy2" } }
+ api.MasonUninstall { "dummy", "dummy2" }
assert.spy(Pkg.uninstall).was_called(2)
assert.spy(Pkg.uninstall).was_called_with(match.is_ref(dummy))
assert.spy(Pkg.uninstall).was_called_with(match.is_ref(dummy2))