diff options
| author | William Boman <william@redwill.se> | 2026-05-30 15:52:15 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-30 15:52:15 +0200 |
| commit | 6daa74748ff63efcf24fb66112412c03df08be72 (patch) | |
| tree | df2a931b1f19cf43fc24e4b733cd83ab07d21b50 /lua/mason-core/fs.lua | |
| parent | fix(fs): implement rmrf natively via libuv (#2098) (diff) | |
| download | mason-6daa74748ff63efcf24fb66112412c03df08be72.tar mason-6daa74748ff63efcf24fb66112412c03df08be72.tar.gz mason-6daa74748ff63efcf24fb66112412c03df08be72.tar.bz2 mason-6daa74748ff63efcf24fb66112412c03df08be72.tar.lz mason-6daa74748ff63efcf24fb66112412c03df08be72.tar.xz mason-6daa74748ff63efcf24fb66112412c03df08be72.tar.zst mason-6daa74748ff63efcf24fb66112412c03df08be72.zip | |
refactor(fs): implement mkdirp natively via libuv (#2100)
Diffstat (limited to 'lua/mason-core/fs.lua')
| -rw-r--r-- | lua/mason-core/fs.lua | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lua/mason-core/fs.lua b/lua/mason-core/fs.lua index 5decd3ca..597ba3fa 100644 --- a/lua/mason-core/fs.lua +++ b/lua/mason-core/fs.lua @@ -1,5 +1,5 @@ local Path = require "mason-core.path" -local a = require "mason-core.async" +local _ = require "mason-core.functional" local log = require "mason-core.log" local settings = require "mason.settings" @@ -123,12 +123,16 @@ local function make_module(uv) ---@param path string function M.mkdirp(path) log.debug("fs: mkdirp", path) - if vim.in_fast_event() then - a.scheduler() + local normalized_path = vim.fs.normalize(path) + local path_components = vim.split(normalized_path, "/", { plain = true }) + if vim.fn.has "win32" ~= 1 then + path_components[1] = "/" end - if vim.fn.mkdir(path, "p") ~= 1 then - log.debug "fs: mkdirp failed" - error(("mkdirp: Could not create directory %q."):format(path)) + for i = 1, #path_components, 1 do + local current_path = vim.fs.joinpath(unpack(_.take(i, path_components))) + if not M.dir_exists(current_path) then + M.mkdir(current_path) + end end end |
