diff options
| author | William Boman <william@redwill.se> | 2023-10-11 20:48:03 +0200 |
|---|---|---|
| committer | William Boman <william@redwill.se> | 2025-02-19 09:23:19 +0100 |
| commit | 7d85d4ff4ce6872f75cd634c5bfd61345b0bf178 (patch) | |
| tree | 54911f5b064ddfe21ff556f3175adedf4f3e5b6a | |
| parent | chore: remove todo comment (diff) | |
| download | mason-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.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 |
