diff options
| author | William Boman <william@redwill.se> | 2022-10-19 14:41:42 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-19 14:41:42 +0200 |
| commit | 38c3c7f68c0cd442f4faf46569d83c5b8a610c97 (patch) | |
| tree | 23c655b038ad8c0c1d80fe1aca7eaf5108aeb0f7 /lua/mason-core | |
| parent | chore: update generated code (#575) (diff) | |
| download | mason-38c3c7f68c0cd442f4faf46569d83c5b8a610c97.tar mason-38c3c7f68c0cd442f4faf46569d83c5b8a610c97.tar.gz mason-38c3c7f68c0cd442f4faf46569d83c5b8a610c97.tar.bz2 mason-38c3c7f68c0cd442f4faf46569d83c5b8a610c97.tar.lz mason-38c3c7f68c0cd442f4faf46569d83c5b8a610c97.tar.xz mason-38c3c7f68c0cd442f4faf46569d83c5b8a610c97.tar.zst mason-38c3c7f68c0cd442f4faf46569d83c5b8a610c97.zip | |
feat(api/command): add --debug flag to :MasonInstall (#576)
Diffstat (limited to 'lua/mason-core')
| -rw-r--r-- | lua/mason-core/functional/init.lua | 1 | ||||
| -rw-r--r-- | lua/mason-core/functional/list.lua | 12 | ||||
| -rw-r--r-- | lua/mason-core/installer/context.lua | 1 | ||||
| -rw-r--r-- | lua/mason-core/installer/init.lua | 14 | ||||
| -rw-r--r-- | lua/mason-core/package/init.lua | 3 |
5 files changed, 26 insertions, 5 deletions
diff --git a/lua/mason-core/functional/init.lua b/lua/mason-core/functional/init.lua index a153e8fa..ed502a4b 100644 --- a/lua/mason-core/functional/init.lua +++ b/lua/mason-core/functional/init.lua @@ -50,6 +50,7 @@ _.flatten = list.flatten _.sort_by = list.sort_by _.uniq_by = list.uniq_by _.join = list.join +_.partition = list.partition ---@module "mason-core.functional.relation" local relation = lazy_require "mason-core.functional.relation" diff --git a/lua/mason-core/functional/list.lua b/lua/mason-core/functional/list.lua index 151b9b25..31b631b8 100644 --- a/lua/mason-core/functional/list.lua +++ b/lua/mason-core/functional/list.lua @@ -189,4 +189,16 @@ _.uniq_by = fun.curryN(function(id, list) return result end, 2) +---@generic T +---@param predicate fun(item: T): boolean +---@param list T[] +---@return T[][] # [T[], T[]] +_.partition = fun.curryN(function(predicate, list) + local partitions = { {}, {} } + for _, item in ipairs(list) do + table.insert(partitions[predicate(item) and 1 or 2], item) + end + return partitions +end, 2) + return _ diff --git a/lua/mason-core/installer/context.lua b/lua/mason-core/installer/context.lua index b6cc24e5..dd9b9617 100644 --- a/lua/mason-core/installer/context.lua +++ b/lua/mason-core/installer/context.lua @@ -147,6 +147,7 @@ InstallContext.__index = InstallContext ---@class InstallContextOpts ---@field requested_version string? +---@field debug boolean? ---@param handle InstallHandle ---@param opts InstallContextOpts diff --git a/lua/mason-core/installer/init.lua b/lua/mason-core/installer/init.lua index 2ab33bc6..ba45789e 100644 --- a/lua/mason-core/installer/init.lua +++ b/lua/mason-core/installer/init.lua @@ -147,10 +147,16 @@ function M.execute(handle, opts) context.stdio_sink.stderr(tostring(failure)) context.stdio_sink.stderr "\n" - -- clean up installation dir - pcall(function() - fs.async.rmrf(context.cwd:get()) - end) + if not opts.debug then + -- clean up installation dir + pcall(function() + fs.async.rmrf(context.cwd:get()) + end) + else + context.stdio_sink.stdout( + ("[debug] Installation directory retained at %q.\n"):format(context.cwd:get()) + ) + end -- unlink linked executables (in the rare occasion an error occurs after linking) linker.unlink(context.package, context.receipt.links) diff --git a/lua/mason-core/package/init.lua b/lua/mason-core/package/init.lua index ad7f6037..81d8ca31 100644 --- a/lua/mason-core/package/init.lua +++ b/lua/mason-core/package/init.lua @@ -84,7 +84,7 @@ function Package:new_handle() return handle end ----@param opts { version: string? }? +---@param opts? { version: string?, debug: boolean? } ---@return InstallHandle function Package:install(opts) opts = opts or {} @@ -125,6 +125,7 @@ function Package:install(opts) handle, { requested_version = opts.version, + debug = opts.debug, } ) return handle |
