mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 02:53:09 +00:00
enhance config include
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
root = "./"
|
||||
include "config.path"
|
||||
|
||||
-- preload = "./examples/preload.lua" -- run preload.lua before every lua service run
|
||||
thread = 8
|
||||
logger = nil
|
||||
logpath = "."
|
||||
@@ -8,12 +10,6 @@ master = "127.0.0.1:2013"
|
||||
start = "main" -- main script
|
||||
bootstrap = "snlua bootstrap" -- The service for bootstrap
|
||||
standalone = "0.0.0.0:2013"
|
||||
luaservice = root.."service/?.lua;"..root.."test/?.lua;"..root.."examples/?.lua"
|
||||
lualoader = root .. "lualib/loader.lua"
|
||||
lua_path = root.."lualib/?.lua;"..root.."lualib/?/init.lua"
|
||||
lua_cpath = root .. "luaclib/?.so"
|
||||
-- preload = "./examples/preload.lua" -- run preload.lua before every lua service run
|
||||
snax = root.."examples/?.lua;"..root.."test/?.lua"
|
||||
-- snax_interface_g = "snax_g"
|
||||
cpath = root.."cservice/?.so"
|
||||
-- daemon = "./skynet.pid"
|
||||
|
||||
6
examples/config.path
Normal file
6
examples/config.path
Normal file
@@ -0,0 +1,6 @@
|
||||
root = "./"
|
||||
luaservice = root.."service/?.lua;"..root.."test/?.lua;"..root.."examples/?.lua"
|
||||
lualoader = root .. "lualib/loader.lua"
|
||||
lua_path = root.."lualib/?.lua;"..root.."lualib/?/init.lua"
|
||||
lua_cpath = root .. "luaclib/?.so"
|
||||
snax = root.."examples/?.lua;"..root.."test/?.lua"
|
||||
@@ -83,18 +83,32 @@ int sigign() {
|
||||
}
|
||||
|
||||
static const char * load_config = "\
|
||||
local config_name = ...\n\
|
||||
local f = assert(io.open(config_name))\n\
|
||||
local code = assert(f:read \'*a\')\n\
|
||||
local function getenv(name) return assert(os.getenv(name), \'os.getenv() failed: \' .. name) end\n\
|
||||
code = string.gsub(code, \'%$([%w_%d]+)\', getenv)\n\
|
||||
f:close()\n\
|
||||
local result = {}\n\
|
||||
local function getenv(name) return assert(os.getenv(name), [[os.getenv() failed: ]] .. name) end\n\
|
||||
local sep = package.config:sub(1,1)\n\
|
||||
local current_path = [[.]]..sep\n\
|
||||
local function include(filename)\n\
|
||||
assert(loadfile(filename, \'t\', result))()\n\
|
||||
local last_path = current_path\n\
|
||||
local path, name = filename:match([[(.*]]..sep..[[)(.*)$]])\n\
|
||||
if path then\n\
|
||||
if path:sub(1,1) == sep then -- root\n\
|
||||
current_path = path\n\
|
||||
else\n\
|
||||
current_path = current_path .. path\n\
|
||||
end\n\
|
||||
else\n\
|
||||
name = filename\n\
|
||||
end\n\
|
||||
local f = assert(io.open(current_path .. name))\n\
|
||||
local code = assert(f:read [[*a]])\n\
|
||||
code = string.gsub(code, [[%$([%w_%d]+)]], getenv)\n\
|
||||
f:close()\n\
|
||||
assert(load(code,[[@]]..filename,[[t]],result))()\n\
|
||||
current_path = last_path\n\
|
||||
end\n\
|
||||
setmetatable(result, { __index = { include = include } })\n\
|
||||
assert(load(code,\'=(load)\',\'t\',result))()\n\
|
||||
local config_name = ...\n\
|
||||
include(config_name)\n\
|
||||
setmetatable(result, nil)\n\
|
||||
return result\n\
|
||||
";
|
||||
|
||||
Reference in New Issue
Block a user