local lfs = require("lfs")
local created = lfs.mkdir("data")
-- created = true
-- An existing directory: nil and a message
local again, err = lfs.mkdir("data")
-- again = nil
-- err = File exists
-- mkdir makes one level, the parents must exist
local flat = lfs.mkdir("data/2027/01")
-- flat = nil
-- Several levels: make each one that is missing
local function make_dirs(path)
-- An absolute path keeps its first slash
local current = path:match("^/") or ""
for part in path:gmatch("[^/]+") do
current = current .. part
if lfs.attributes(current) == nil then
assert(lfs.mkdir(current))
end
current = current .. "/"
end
end
local nested = "data/2027/01"
make_dirs(nested)
local mode = lfs.attributes(nested, "mode")
-- mode = directory
print("created = " .. tostring(created))
print("again = " .. tostring(again))
print("err = " .. err)
print("flat = " .. tostring(flat))
print("mode = " .. mode)