modpol/modpol_core/storage/store-modules.lua
2022-06-08 16:57:25 -04:00

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