diff --git a/lua/lazy/manage/task/fs.lua b/lua/lazy/manage/task/fs.lua index c99c8bf..3401c29 100644 --- a/lua/lazy/manage/task/fs.lua +++ b/lua/lazy/manage/task/fs.lua @@ -4,6 +4,19 @@ local Util = require("lazy.util") ---@type table local M = {} +local function rm(dir) + local stat = vim.uv.fs_lstat(dir) + assert(stat and stat.type == "directory", dir .. " should be a directory!") + Util.walk(dir, function(path, _, type) + if type == "directory" then + vim.uv.fs_rmdir(path) + else + vim.uv.fs_unlink(path) + end + end) + vim.uv.fs_rmdir(dir) +end + M.clean = { skip = function(plugin) return plugin._.is_local @@ -11,18 +24,12 @@ M.clean = { run = function(self) local dir = self.plugin.dir:gsub("/+$", "") assert(dir:find(Config.options.root, 1, true) == 1, self.plugin.dir .. " should be under packpath!") + rm(dir) - local stat = vim.uv.fs_lstat(dir) - assert(stat and stat.type == "directory", self.plugin.dir .. " should be a directory!") - - Util.walk(dir, function(path, _, type) - if type == "directory" then - vim.uv.fs_rmdir(path) - else - vim.uv.fs_unlink(path) - end - end) - vim.uv.fs_rmdir(dir) + local rock_root = Config.options.rocks.root .. "/" .. self.plugin.name + if vim.uv.fs_stat(rock_root) then + rm(rock_root) + end self.plugin._.installed = false end,