From a3a36522945b6a56b4a81808856d38060977b99a Mon Sep 17 00:00:00 2001 From: Squibid Date: Sat, 26 Apr 2025 00:05:16 -0500 Subject: [PATCH] move clean() to the fs file --- lua/dep.lua | 44 ++------------------------------------------ lua/dep/fs.lua | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 42 deletions(-) diff --git a/lua/dep.lua b/lua/dep.lua index 2a90ad1..41ef4ce 100644 --- a/lua/dep.lua +++ b/lua/dep.lua @@ -49,46 +49,6 @@ function M.registertree(speclist, overrides) end end ---- clean out old packages -function M.clean() - h.uv.fs_scandir( - packager.get_base_dir(), - vim.schedule_wrap(function(err, handle) - if err then - logger:log("error", "failed to clean; reason: %s", err) - else - local queue = {} - - while handle do - local name = h.uv.fs_scandir_next(handle) - if name then - queue[name] = packager.get_base_dir().."/"..name - else - break - end - end - - -- keep packages that still exist - for _, package in pairs(packager.get_packages()) do - queue[package.name] = nil - end - - for name, dir in pairs(queue) do - local co = coroutine.create(function() - local ok = vim.fn.delete(dir, "rf") - if ok then - logger:log("clean", "deleted %s", name) - else - logger:log("error", "failed to delete %s", name) - end - end) - coroutine.resume(co) - end - end - end) - ) -end - --- reload all packages in package table spec ---@param force boolean? force all packages to load function M.reload(force) @@ -131,7 +91,7 @@ function M.synctree(tree, cb) logger:log("update", "synchronized %s %s", #tree, #tree == 1 and "package" or "packages") end - M.clean() + fs:clean(packager) M.reload() if cb then @@ -257,7 +217,7 @@ return function(opts) vim.api.nvim_create_user_command("DepClean", function() -- clean AND reload to make sure that all old packages are gone - M.clean() + fs:clean(packager) M.reload() end, {}) diff --git a/lua/dep/fs.lua b/lua/dep/fs.lua index 9eac8ec..ac05f74 100644 --- a/lua/dep/fs.lua +++ b/lua/dep/fs.lua @@ -19,4 +19,45 @@ function fs:link(package, cb) end) end +--- clean out old packages +---@param package package any package +function fs:clean(package) + h.uv.fs_scandir( + package.get_base_dir(), + vim.schedule_wrap(function(err, handle) + if err then + logger:log("error", "failed to clean; reason: %s", err) + else + local queue = {} + + while handle do + local name = h.uv.fs_scandir_next(handle) + if name then + queue[name] = package.get_base_dir().."/"..name + else + break + end + end + + -- keep packages that still exist + for _, pkg in pairs(package.get_packages()) do + queue[pkg.name] = nil + end + + for name, dir in pairs(queue) do + local co = coroutine.create(function() + local ok = vim.fn.delete(dir, "rf") + if ok then + logger:log("clean", "deleted %s", name) + else + logger:log("error", "failed to delete %s", name) + end + end) + coroutine.resume(co) + end + end + end) + ) +end + return fs