mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 03:53:09 +00:00
snax loader
This commit is contained in:
@@ -1,8 +1,24 @@
|
||||
local skynet = require "skynet"
|
||||
|
||||
local function dft_loader(path, name, G)
|
||||
local errlist = {}
|
||||
|
||||
for pat in string.gmatch(path,"[^;]+") do
|
||||
local filename = string.gsub(pat, "?", name)
|
||||
local f , err = loadfile(filename, "bt", G)
|
||||
if f then
|
||||
return f, pat
|
||||
else
|
||||
table.insert(errlist, err)
|
||||
end
|
||||
end
|
||||
|
||||
error(table.concat(errlist, "\n"))
|
||||
end
|
||||
|
||||
return function (name , G, loader)
|
||||
loader = loader or loadfile
|
||||
local mainfunc
|
||||
loader = loader or dft_loader
|
||||
local mainfunc
|
||||
|
||||
local function func_id(id, group)
|
||||
local tmp = {}
|
||||
@@ -61,27 +77,8 @@ return function (name , G, loader)
|
||||
|
||||
local pattern
|
||||
|
||||
do
|
||||
local path = assert(skynet.getenv "snax" , "please set snax in config file")
|
||||
|
||||
local errlist = {}
|
||||
|
||||
for pat in string.gmatch(path,"[^;]+") do
|
||||
local filename = string.gsub(pat, "?", name)
|
||||
local f , err = loader(filename, "bt", G)
|
||||
if f then
|
||||
pattern = pat
|
||||
mainfunc = f
|
||||
break
|
||||
else
|
||||
table.insert(errlist, err)
|
||||
end
|
||||
end
|
||||
|
||||
if mainfunc == nil then
|
||||
error(table.concat(errlist, "\n"))
|
||||
end
|
||||
end
|
||||
local path = assert(skynet.getenv "snax" , "please set snax in config file")
|
||||
mainfunc, pattern = loader(path, name, G)
|
||||
|
||||
setmetatable(G, { __index = env , __newindex = init_system })
|
||||
local ok, err = xpcall(mainfunc, debug.traceback)
|
||||
|
||||
Reference in New Issue
Block a user