From 3d8e4fb947299dee3b73c9a42dadab0e0dc72c2c Mon Sep 17 00:00:00 2001 From: lukvmil Date: Sat, 12 Mar 2022 01:01:04 -0500 Subject: [PATCH] added automatic module loading system, use ignore.txt to exclude specific modules --- modpol_core/api.lua | 45 +++++++++++++----------- modpol_core/modules/ignore.txt | 3 ++ modpol_core/storage/store-modules.lua | 50 +++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 21 deletions(-) create mode 100644 modpol_core/modules/ignore.txt create mode 100644 modpol_core/storage/store-modules.lua diff --git a/modpol_core/api.lua b/modpol_core/api.lua index df58950..ba9d047 100644 --- a/modpol_core/api.lua +++ b/modpol_core/api.lua @@ -12,24 +12,27 @@ dofile (localdir .. "/interactions/interactions.lua") --modules --TODO make this automatic and directory-based -dofile (localdir .. "/modules/add_child_org_consent.lua") -dofile (localdir .. "/modules/add_child_org.lua") -dofile (localdir .. "/modules/change_modules.lua") -dofile (localdir .. "/modules/change_policy.lua") -dofile (localdir .. "/modules/consent.lua") -dofile (localdir .. "/modules/create_token.lua") -dofile (localdir .. "/modules/defer_consent.lua") -dofile (localdir .. "/modules/display_policies.lua") -dofile (localdir .. "/modules/display_processes.lua") -dofile (localdir .. "/modules/join_org_consent.lua") -dofile (localdir .. "/modules/leave_org.lua") -dofile (localdir .. "/modules/message_org.lua") -dofile (localdir .. "/modules/randomizer.lua") -dofile (localdir .. "/modules/remove_child_consent.lua") -dofile (localdir .. "/modules/remove_member_consent.lua") -dofile (localdir .. "/modules/remove_org_consent.lua") -dofile (localdir .. "/modules/remove_org.lua") -dofile (localdir .. "/modules/remove_process.lua") -dofile (localdir .. "/modules/rename_org_consent.lua") -dofile (localdir .. "/modules/send_token.lua") -dofile (localdir .. "/modules/tokenomics.lua") +dofile (localdir .. "/storage/store-modules.lua") +modpol.load_modules(localdir .. "/modules") + +-- dofile (localdir .. "/modules/add_child_org_consent.lua") +-- dofile (localdir .. "/modules/add_child_org.lua") +-- dofile (localdir .. "/modules/change_modules.lua") +-- dofile (localdir .. "/modules/change_policy.lua") +-- dofile (localdir .. "/modules/consent.lua") +-- dofile (localdir .. "/modules/create_token.lua") +-- dofile (localdir .. "/modules/defer_consent.lua") +-- dofile (localdir .. "/modules/display_policies.lua") +-- dofile (localdir .. "/modules/display_processes.lua") +-- dofile (localdir .. "/modules/join_org_consent.lua") +-- dofile (localdir .. "/modules/leave_org.lua") +-- dofile (localdir .. "/modules/message_org.lua") +-- dofile (localdir .. "/modules/randomizer.lua") +-- dofile (localdir .. "/modules/remove_child_consent.lua") +-- dofile (localdir .. "/modules/remove_member_consent.lua") +-- dofile (localdir .. "/modules/remove_org_consent.lua") +-- dofile (localdir .. "/modules/remove_org.lua") +-- dofile (localdir .. "/modules/remove_process.lua") +-- dofile (localdir .. "/modules/rename_org_consent.lua") +-- dofile (localdir .. "/modules/send_token.lua") +-- dofile (localdir .. "/modules/tokenomics.lua") diff --git a/modpol_core/modules/ignore.txt b/modpol_core/modules/ignore.txt new file mode 100644 index 0000000..89f1b33 --- /dev/null +++ b/modpol_core/modules/ignore.txt @@ -0,0 +1,3 @@ +change_modules-dropdown.lua +join_org.lua +template.lua \ No newline at end of file diff --git a/modpol_core/storage/store-modules.lua b/modpol_core/storage/store-modules.lua new file mode 100644 index 0000000..4849e72 --- /dev/null +++ b/modpol_core/storage/store-modules.lua @@ -0,0 +1,50 @@ +local lfs = require "lfs" + +-- 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 \ No newline at end of file