40 lines
1.1 KiB
Lua
40 lines
1.1 KiB
Lua
|
|
local pairs = pairs
|
|
|
|
--- Proxy module for filesystem and platform abstractions.
|
|
-- All code using "fs" code should require "luarocks.fs",
|
|
-- and not the various platform-specific implementations.
|
|
-- However, see the documentation of the implementation
|
|
-- for the API reference.
|
|
module("luarocks.fs", package.seeall)
|
|
|
|
local cfg = require("luarocks.cfg")
|
|
|
|
local function load_fns(fs_table)
|
|
for name, fn in pairs(fs_table) do
|
|
if not _M[name] then
|
|
_M[name] = fn
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Load platform-specific functions
|
|
local loaded_platform = nil
|
|
for _, platform in ipairs(cfg.platforms) do
|
|
local ok, fs_plat = pcall(require, "luarocks.fs."..platform)
|
|
if ok and fs_plat then
|
|
loaded_platform = platform
|
|
load_fns(fs_plat)
|
|
break
|
|
end
|
|
end
|
|
|
|
-- Load platform-independent pure-Lua functionality
|
|
local fs_lua = require("luarocks.fs.lua")
|
|
load_fns(fs_lua)
|
|
|
|
-- Load platform-specific fallbacks for missing Lua modules
|
|
local ok, fs_plat_tools = pcall(require, "luarocks.fs."..loaded_platform..".tools")
|
|
if ok and fs_plat_tools then load_fns(fs_plat_tools) end
|
|
|