Change file structures so that the interior modpol folder IS the portable modpol.
Added documentation of how to pre-define the modpath and the storage file.
This commit is contained in:
88
modpol/modpol.lua
Normal file
88
modpol/modpol.lua
Normal file
@@ -0,0 +1,88 @@
|
||||
-- ===================================================================
|
||||
-- /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 .. "/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.
|
||||
Reference in New Issue
Block a user