diff options
| -rw-r--r-- | lua/mason/api/command.lua | 21 |
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 |
