59 lines
1.7 KiB
Lua
59 lines
1.7 KiB
Lua
local lfs
|
|
-- checks if lua file system is installed
|
|
local using_lfs = pcall(function() lfs = require "lfs" end)
|
|
|
|
-- switches to legacy module loading if lfs is not available
|
|
if using_lfs then
|
|
|
|
-- loads file names to ignore into a table
|
|
function fetch_ignores(module_path)
|
|
local ignore_list = {}
|
|
-- checks if ignore.txt exists
|
|
local f_test = io.open(module_path .. "/ignore.txt", "r")
|
|
if not f_test then return {} end
|
|
|
|
-- puts each line of ignore.txt into the table
|
|
local f = io.lines(module_path .. "/ignore.txt")
|
|
for line in f do
|
|
table.insert(ignore_list, line)
|
|
end
|
|
return ignore_list
|
|
end
|
|
|
|
-- checks if a string is in a list
|
|
function check_list(ignore_list, name)
|
|
for i, v in ipairs(ignore_list) do
|
|
if v == name then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
modpol.load_modules = function(module_path)
|
|
local loaded = 0
|
|
local ignored = 0
|
|
local ignores = fetch_ignores(module_path)
|
|
for file in lfs.dir(module_path) do
|
|
if file == "." or file == ".." then
|
|
-- ignoring current and parent directory
|
|
else
|
|
-- only looks for .lua files
|
|
if string.sub(file, -4, -1) == ".lua" then
|
|
|
|
-- doesn't load files in the ignore.txt
|
|
if check_list(ignores, file) then
|
|
ignored = ignored + 1
|
|
else
|
|
dofile(module_path .. "/" .. file)
|
|
loaded = loaded + 1
|
|
end
|
|
end
|
|
end
|
|
end
|
|
print(loaded .. " modules loaded (" .. ignored .. " ignored)")
|
|
end
|
|
|
|
else
|
|
dofile (modpol.topdir .. "/storage/store-modules-legacy.lua")
|
|
end |