lualoader: Privatize some more config.lua bits
These functions are also not quite suitable for a public API, so privatize them to config.
This commit is contained in:
parent
64c91742f3
commit
dbef52531e
@ -92,6 +92,16 @@ local function setEnv(key, value)
|
|||||||
return loader.setenv(key, value)
|
return loader.setenv(key, value)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- name here is one of 'name', 'type', flags', 'before', 'after', or 'error.'
|
||||||
|
-- These are set from lines in loader.conf(5): ${key}_${name}="${value}" where
|
||||||
|
-- ${key} is a module name.
|
||||||
|
local function setKey(key, name, value)
|
||||||
|
if modules[key] == nil then
|
||||||
|
modules[key] = {}
|
||||||
|
end
|
||||||
|
modules[key][name] = value
|
||||||
|
end
|
||||||
|
|
||||||
local pattern_table = {
|
local pattern_table = {
|
||||||
{
|
{
|
||||||
str = "^%s*(#.*)",
|
str = "^%s*(#.*)",
|
||||||
@ -111,42 +121,42 @@ local pattern_table = {
|
|||||||
{
|
{
|
||||||
str = "^%s*([%w_]+)_name%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
|
str = "^%s*([%w_]+)_name%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
|
||||||
process = function(k, v)
|
process = function(k, v)
|
||||||
config.setKey(k, "name", v)
|
setKey(k, "name", v)
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
-- module_type="value"
|
-- module_type="value"
|
||||||
{
|
{
|
||||||
str = "^%s*([%w_]+)_type%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
|
str = "^%s*([%w_]+)_type%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
|
||||||
process = function(k, v)
|
process = function(k, v)
|
||||||
config.setKey(k, "type", v)
|
setKey(k, "type", v)
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
-- module_flags="value"
|
-- module_flags="value"
|
||||||
{
|
{
|
||||||
str = "^%s*([%w_]+)_flags%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
|
str = "^%s*([%w_]+)_flags%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
|
||||||
process = function(k, v)
|
process = function(k, v)
|
||||||
config.setKey(k, "flags", v)
|
setKey(k, "flags", v)
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
-- module_before="value"
|
-- module_before="value"
|
||||||
{
|
{
|
||||||
str = "^%s*([%w_]+)_before%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
|
str = "^%s*([%w_]+)_before%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
|
||||||
process = function(k, v)
|
process = function(k, v)
|
||||||
config.setKey(k, "before", v)
|
setKey(k, "before", v)
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
-- module_after="value"
|
-- module_after="value"
|
||||||
{
|
{
|
||||||
str = "^%s*([%w_]+)_after%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
|
str = "^%s*([%w_]+)_after%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
|
||||||
process = function(k, v)
|
process = function(k, v)
|
||||||
config.setKey(k, "after", v)
|
setKey(k, "after", v)
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
-- module_error="value"
|
-- module_error="value"
|
||||||
{
|
{
|
||||||
str = "^%s*([%w_]+)_error%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
|
str = "^%s*([%w_]+)_error%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
|
||||||
process = function(k, v)
|
process = function(k, v)
|
||||||
config.setKey(k, "error", v)
|
setKey(k, "error", v)
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
-- exec="command"
|
-- exec="command"
|
||||||
@ -178,6 +188,73 @@ local pattern_table = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local function isValidComment(line)
|
||||||
|
if line ~= nil then
|
||||||
|
local s = line:match("^%s*#.*")
|
||||||
|
if s == nil then
|
||||||
|
s = line:match("^%s*$")
|
||||||
|
end
|
||||||
|
if s == nil then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
local function loadModule(mod, silent)
|
||||||
|
local status = true
|
||||||
|
local pstatus
|
||||||
|
for k, v in pairs(mod) do
|
||||||
|
if v.load == "YES" then
|
||||||
|
local str = "load "
|
||||||
|
if v.flags ~= nil then
|
||||||
|
str = str .. v.flags .. " "
|
||||||
|
end
|
||||||
|
if v.type ~= nil then
|
||||||
|
str = str .. "-t " .. v.type .. " "
|
||||||
|
end
|
||||||
|
if v.name ~= nil then
|
||||||
|
str = str .. v.name
|
||||||
|
else
|
||||||
|
str = str .. k
|
||||||
|
end
|
||||||
|
if v.before ~= nil then
|
||||||
|
pstatus = cli_execute_unparsed(v.before) == 0
|
||||||
|
if not pstatus and not silent then
|
||||||
|
print(MSG_FAILEXBEF:format(v.before, k))
|
||||||
|
end
|
||||||
|
status = status and pstatus
|
||||||
|
end
|
||||||
|
|
||||||
|
if cli_execute_unparsed(str) ~= 0 then
|
||||||
|
if not silent then
|
||||||
|
print(MSG_FAILEXMOD:format(str))
|
||||||
|
end
|
||||||
|
if v.error ~= nil then
|
||||||
|
cli_execute_unparsed(v.error)
|
||||||
|
end
|
||||||
|
status = false
|
||||||
|
end
|
||||||
|
|
||||||
|
if v.after ~= nil then
|
||||||
|
pstatus = cli_execute_unparsed(v.after) == 0
|
||||||
|
if not pstatus and not silent then
|
||||||
|
print(MSG_FAILEXAF:format(v.after, k))
|
||||||
|
end
|
||||||
|
status = status and pstatus
|
||||||
|
end
|
||||||
|
|
||||||
|
-- else
|
||||||
|
-- if not silent then
|
||||||
|
-- print("Skipping module '". . k .. "'")
|
||||||
|
-- end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return status
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
local function readFile(name, silent)
|
local function readFile(name, silent)
|
||||||
local f = io.open(name)
|
local f = io.open(name)
|
||||||
if f == nil then
|
if f == nil then
|
||||||
@ -252,82 +329,6 @@ function config.setCarouselIndex(id, idx)
|
|||||||
carousel_choices[id] = idx
|
carousel_choices[id] = idx
|
||||||
end
|
end
|
||||||
|
|
||||||
-- name here is one of 'name', 'type', flags', 'before', 'after', or 'error.'
|
|
||||||
-- These are set from lines in loader.conf(5): ${key}_${name}="${value}" where
|
|
||||||
-- ${key} is a module name.
|
|
||||||
function config.setKey(key, name, value)
|
|
||||||
if modules[key] == nil then
|
|
||||||
modules[key] = {}
|
|
||||||
end
|
|
||||||
modules[key][name] = value
|
|
||||||
end
|
|
||||||
|
|
||||||
function config.isValidComment(line)
|
|
||||||
if line ~= nil then
|
|
||||||
local s = line:match("^%s*#.*")
|
|
||||||
if s == nil then
|
|
||||||
s = line:match("^%s*$")
|
|
||||||
end
|
|
||||||
if s == nil then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
|
|
||||||
function config.loadmod(mod, silent)
|
|
||||||
local status = true
|
|
||||||
local pstatus
|
|
||||||
for k, v in pairs(mod) do
|
|
||||||
if v.load == "YES" then
|
|
||||||
local str = "load "
|
|
||||||
if v.flags ~= nil then
|
|
||||||
str = str .. v.flags .. " "
|
|
||||||
end
|
|
||||||
if v.type ~= nil then
|
|
||||||
str = str .. "-t " .. v.type .. " "
|
|
||||||
end
|
|
||||||
if v.name ~= nil then
|
|
||||||
str = str .. v.name
|
|
||||||
else
|
|
||||||
str = str .. k
|
|
||||||
end
|
|
||||||
if v.before ~= nil then
|
|
||||||
pstatus = cli_execute_unparsed(v.before) == 0
|
|
||||||
if not pstatus and not silent then
|
|
||||||
print(MSG_FAILEXBEF:format(v.before, k))
|
|
||||||
end
|
|
||||||
status = status and pstatus
|
|
||||||
end
|
|
||||||
|
|
||||||
if cli_execute_unparsed(str) ~= 0 then
|
|
||||||
if not silent then
|
|
||||||
print(MSG_FAILEXMOD:format(str))
|
|
||||||
end
|
|
||||||
if v.error ~= nil then
|
|
||||||
cli_execute_unparsed(v.error)
|
|
||||||
end
|
|
||||||
status = false
|
|
||||||
end
|
|
||||||
|
|
||||||
if v.after ~= nil then
|
|
||||||
pstatus = cli_execute_unparsed(v.after) == 0
|
|
||||||
if not pstatus and not silent then
|
|
||||||
print(MSG_FAILEXAF:format(v.after, k))
|
|
||||||
end
|
|
||||||
status = status and pstatus
|
|
||||||
end
|
|
||||||
|
|
||||||
-- else
|
|
||||||
-- if not silent then
|
|
||||||
-- print("Skipping module '". . k .. "'")
|
|
||||||
-- end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return status
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Returns true if we processed the file successfully, false if we did not.
|
-- Returns true if we processed the file successfully, false if we did not.
|
||||||
-- If 'silent' is true, being unable to read the file is not considered a
|
-- If 'silent' is true, being unable to read the file is not considered a
|
||||||
-- failure.
|
-- failure.
|
||||||
@ -358,7 +359,7 @@ function config.parse(text)
|
|||||||
if k ~= nil then
|
if k ~= nil then
|
||||||
found = true
|
found = true
|
||||||
|
|
||||||
if config.isValidComment(c) then
|
if isValidComment(c) then
|
||||||
val.process(k, v)
|
val.process(k, v)
|
||||||
else
|
else
|
||||||
print(MSG_MALFORMED:format(n,
|
print(MSG_MALFORMED:format(n,
|
||||||
@ -520,7 +521,7 @@ function config.loadelf()
|
|||||||
end
|
end
|
||||||
|
|
||||||
print(MSG_MODLOADING)
|
print(MSG_MODLOADING)
|
||||||
if not config.loadmod(modules, not config.verbose) then
|
if not loadModule(modules, not config.verbose) then
|
||||||
print(MSG_MODLOADFAIL)
|
print(MSG_MODLOADFAIL)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user