-- =================================================================== -- /modpol.lua -- Modular Politics (modpol) core -- =================================================================== -- Basic tables -- Main API table if not modpol then modpol = {} end -- Table for modpol data modpol.orgs = { } -- Record of every state change should appear here modpol.ledger = { } -- =================================================================== -- Locate framework top-level directory. -- This function is intended for use under Linux and/or UNIX only. -- It -- returns a relative or absolute path for the framework top-level -- directory without a trailing slash. -- if your application has a different method of getting the script directory, -- then feel free to overwrite this in an init.lua or other such file by first -- defining the modpol table and then defining the get_script_dir() function local get_script_dir = modpol.get_script_dir or function() local str = debug.getinfo (2, "S").source:sub (2) str = str:match ("(.*/)") or "." str = str:gsub ("/$", "", 1) return str end -- Absolute or relative path to script directory. local topdir = get_script_dir() modpol.topdir = topdir print (topdir) -- =================================================================== -- Load dependencies -- OldCoder utilities dofile (topdir .. "/util/ocutil/ocutil.lua") -- =================================================================== -- Persistent storage -- must implement modpol.load_storage() and modpol.store_data() -- Select a storage method -- -- preferably, declare this in the init.lua that calls modpol.lua This is the default. -- Works with CLI: modpol.storage_file_path = modpol.storage_file_path or topdir .. "/storage/storage-local.lua" -- Works with Minetest 5: --modpol.storage_file_path = modpol.storage_file_path or topdir .. "/storage/storage-mod_storage.lua") --execute the storage file dofile (modpol.storage_file_path) -- If available, load persistent storage into active tables modpol.load_storage() -- =================================================================== -- ModPol core features dofile (topdir .. "/modpol/api.lua") -- =================================================================== -- Final checks -- create instance if not present if (modpol.orgs["instance"] == nil) then modpol.add_org("instance", modpol.list_users()) end modpol.ocutil.log ("modpol loaded") -- =================================================================== -- End of file.