37 lines
950 B
Lua
37 lines
950 B
Lua
local name, addon = ...
|
|
setmetatable(addon,getmetatable(CreateFrame("Frame")))
|
|
local LibStub = LibStub
|
|
addon['inits'] = addon['inits'] or {}
|
|
addon['preloads'] = addon['preloads'] or {}
|
|
addon['logouts'] = addon['logouts'] or {}
|
|
|
|
local function embed(major, funclist,lib)
|
|
local base = LibStub:GetLibrary(major, false)
|
|
base['addons'] = base['addons'] or {}
|
|
base['addons'][addon] = true
|
|
-- print(major, funclist,lib)
|
|
if(lib) then
|
|
for i= 1,#funclist do -- update lib
|
|
base[funclist[i]] = lib[funclist[i]]
|
|
end
|
|
for v in pairs(base['addons']) do -- update embeded addons
|
|
for i= 1,#funclist do
|
|
v[funclist[i]] = base[funclist[i]]
|
|
end
|
|
end
|
|
else
|
|
for i= 1,#funclist do
|
|
addon[funclist[i]] = base[funclist[i]]
|
|
end
|
|
end
|
|
end
|
|
|
|
function addon:LibInit(major, minor, funclist)
|
|
local lib = LibStub:NewLibrary(major, minor)
|
|
if not lib then
|
|
embed(major, funclist)
|
|
return nil
|
|
end
|
|
return function(lib) embed(major, funclist,lib) end
|
|
end
|