From 7d85d4ff4ce6872f75cd634c5bfd61345b0bf178 Mon Sep 17 00:00:00 2001 From: William Boman Date: Wed, 11 Oct 2023 20:48:03 +0200 Subject: fix(command): don't attempt installing packages that are already installing --- lua/mason/api/command.lua | 21 +++++++++++++-------- 1 file 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 -- cgit v1.2.3-70-g09d2