85 lines
1.9 KiB
Plaintext
85 lines
1.9 KiB
Plaintext
-- :Minify:--
|
|
local fs = {}
|
|
local disks = {}
|
|
local mounts = {}
|
|
|
|
local function resolve(path)
|
|
local mountPoint = "/"
|
|
for mount, disk in pairs(mounts) do
|
|
if path:sub(1, #mount) == mount then
|
|
if not mountPoint or #mount > #mountPoint then
|
|
mountPoint = mount
|
|
end
|
|
end
|
|
end
|
|
local newPath = path:sub(#mountPoint + 1)
|
|
return disks[mounts[mountPoint]], newPath
|
|
end
|
|
|
|
function fs.update(initdisks)
|
|
disks = {}
|
|
for k, v in initdisks.list() do disks[k] = v end
|
|
end
|
|
|
|
function fs.exists(path)
|
|
local disk, newPath = resolve(path)
|
|
return disk:directoryExists(newPath) or disk:fileExists(newPath)
|
|
end
|
|
|
|
function fs.isFile(path)
|
|
local disk, newPath = resolve(path)
|
|
return disk:fileExists(newPath)
|
|
end
|
|
|
|
function fs.isDir(path)
|
|
local disk, newPath = resolve(path)
|
|
return disk:directoryExists(newPath)
|
|
end
|
|
|
|
function fs.list(path)
|
|
local disk, newPath = resolve(path)
|
|
return disk:list(newPath)
|
|
end
|
|
|
|
function fs.makeDir(path)
|
|
local disk, newPath = resolve(path)
|
|
return disk:makeDirectory(newPath)
|
|
end
|
|
|
|
function fs.remove(path)
|
|
local disk, newPath = resolve(path)
|
|
return disk:remove(newPath)
|
|
end
|
|
|
|
function fs.readAllText(path)
|
|
local disk, newPath = resolve(path)
|
|
local handle = disk:open(newPath, "r")
|
|
if not handle then return nil end
|
|
local content = handle.readAll()
|
|
handle.close()
|
|
return content
|
|
end
|
|
|
|
function fs.writeAllText(path, text)
|
|
local disk, newPath = resolve(path)
|
|
local handle = disk:open(newPath, "w")
|
|
handle.write(text)
|
|
handle.close()
|
|
end
|
|
|
|
function fs.appendAllText(path, text)
|
|
local disk, newPath = resolve(path)
|
|
local handle = disk:open(newPath, "a")
|
|
handle.write(text)
|
|
handle.close()
|
|
end
|
|
|
|
function fs.load(path) return load(fs.readAllText(path), path) end
|
|
|
|
function fs.mount(disk, mountPoint)
|
|
if not disks[disk] then return end
|
|
mounts[mountPoint] = disk
|
|
end
|
|
|
|
return fs
|