Просмотр исходного кода

added automatic module loading system, use ignore.txt to exclude specific modules

lukvmil 2 лет назад
Родитель
Сommit
3d8e4fb947
3 измененных файлов с 77 добавлено и 21 удалено
  1. 24 21
      modpol_core/api.lua
  2. 3 0
      modpol_core/modules/ignore.txt
  3. 50 0
      modpol_core/storage/store-modules.lua

+ 24 - 21
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")

+ 3 - 0
modpol_core/modules/ignore.txt

@@ -0,0 +1,3 @@
+change_modules-dropdown.lua
+join_org.lua
+template.lua

+ 50 - 0
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