Integrate mkdirp function in common module (#265)

Move the function mkdirp into common to be generally available.

Use the new common.mkdirp from create_user_directory() from
core/init.lua replacing previous parent directory creation code
within the function.

The previous mkdirp function did not work on Windows where
absolute paths starts with a drive letter. The code from
create_user_directory() did not have this problem but was wrong
in the way it was creating the nested directories.

The new implementation in common.mkdirp fix both problems.
This commit is contained in:
Francesco
2021-06-13 19:50:42 +02:00
committed by GitHub
parent 9823da8531
commit 98164f6d4f
3 changed files with 28 additions and 45 deletions
+4 -17
View File
@@ -276,25 +276,12 @@ end
-- create a directory using mkdir but may need to create the parent
-- directories as well.
local function create_user_directory()
local dirname_create = USERDIR
local basedir
local subdirs = {}
while dirname_create and dirname_create ~= "" do
local success_mkdir = system.mkdir(dirname_create)
if success_mkdir then break end
dirname_create, basedir = dirname_create:match("(.*)[/\\](.+)$")
if basedir then
subdirs[#subdirs + 1] = basedir
end
end
for _, dirname in ipairs(subdirs) do
dirname_create = dirname_create .. '/' .. dirname
if not system.mkdir(dirname_create) then
error("cannot create directory: \"" .. dirname_create .. "\"")
end
local success, err = common.mkdirp(USERDIR)
if not success then
error("cannot create directory \"" .. USERDIR .. "\": " .. err)
end
for _, modname in ipairs {'plugins', 'colors', 'fonts'} do
local subdirname = dirname_create .. '/' .. modname
local subdirname = USERDIR .. PATHSEP .. modname
if not system.mkdir(subdirname) then
error("cannot create directory: \"" .. subdirname .. "\"")
end