aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2023-10-11 20:48:03 +0200
committerWilliam Boman <william@redwill.se>2025-02-19 09:23:19 +0100
commit7d85d4ff4ce6872f75cd634c5bfd61345b0bf178 (patch)
tree54911f5b064ddfe21ff556f3175adedf4f3e5b6a
parentchore: remove todo comment (diff)
downloadmason-7d85d4ff4ce6872f75cd634c5bfd61345b0bf178.tar
mason-7d85d4ff4ce6872f75cd634c5bfd61345b0bf178.tar.gz
mason-7d85d4ff4ce6872f75cd634c5bfd61345b0bf178.tar.bz2
mason-7d85d4ff4ce6872f75cd634c5bfd61345b0bf178.tar.lz
mason-7d85d4ff4ce6872f75cd634c5bfd61345b0bf178.tar.xz
mason-7d85d4ff4ce6872f75cd634c5bfd61345b0bf178.tar.zst
mason-7d85d4ff4ce6872f75cd634c5bfd61345b0bf178.zip
fix(command): don't attempt installing packages that are already installing
-rw-r--r--lua/mason/api/command.lua21
1 files changed, 13 insertions, 8 deletions
diff --git a/lua/mason/api/command.lua b/lua/mason/api/command.lua
index 38b1742b..3a3c997b 100644
--- a/lua/mason/api/command.lua
+++ b/lua/mason/api/command.lua
@@ -84,17 +84,22 @@ local function MasonInstall(package_specifiers, opts)
opts = opts or {}
local Package = require "mason-core.package"
local registry = require "mason-registry"
+ local Optional = require "mason-core.optional"
- local install_packages = _.map(function(pkg_specifier)
+ local install_packages = _.filter_map(function(pkg_specifier)
local package_name, version = Package.Parse(pkg_specifier)
local pkg = registry.get_package(package_name)
- return pkg:install {
- version = version,
- debug = opts.debug,
- force = opts.force,
- strict = opts.strict,
- target = opts.target,
- }
+ if pkg:is_installing() then
+ return Optional.empty()
+ else
+ return Optional.of(pkg:install {
+ version = version,
+ debug = opts.debug,
+ force = opts.force,
+ strict = opts.strict,
+ target = opts.target,
+ })
+ end
end)
if platform.is_headless then