lualoader: config: start exporting readConfFiles
In the process, change it slightly: readConfFiles will take a string like loader_conf_files in addition to the loaded_files table that it normally takes. This is to facilitate the addition of a read-conf CLI command, which will just pass in the single file to read and an empty table. MFC after: 3 days
This commit is contained in:
parent
ecacf5ff1e
commit
7a5c6c8bfe
@ -340,38 +340,6 @@ local function loadModule(mod, silent)
|
||||
return status
|
||||
end
|
||||
|
||||
local function readConfFiles(loaded_files)
|
||||
local f = loader.getenv("loader_conf_files")
|
||||
if f ~= nil then
|
||||
local prefiles = f
|
||||
for name in f:gmatch("([%w%p]+)%s*") do
|
||||
if loaded_files[name] ~= nil then
|
||||
goto continue
|
||||
end
|
||||
|
||||
print("Loading " .. name)
|
||||
-- These may or may not exist, and that's ok. Do a
|
||||
-- silent parse so that we complain on parse errors but
|
||||
-- not for them simply not existing.
|
||||
if not config.processFile(name, true) then
|
||||
print(MSG_FAILPARSECFG:format(name))
|
||||
end
|
||||
|
||||
loaded_files[name] = true
|
||||
local newfiles = loader.getenv("loader_conf_files")
|
||||
if prefiles ~= newfiles then
|
||||
-- Recurse; process the new files immediately.
|
||||
-- If we come back and it turns out we've
|
||||
-- already loaded the rest of what was in the
|
||||
-- original loader_conf_files, no big deal.
|
||||
readConfFiles(loaded_files)
|
||||
prefiles = newfiles
|
||||
end
|
||||
::continue::
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function readFile(name, silent)
|
||||
local f = io.open(name)
|
||||
if f == nil then
|
||||
@ -492,6 +460,40 @@ function config.parse(text)
|
||||
return status
|
||||
end
|
||||
|
||||
function config.readConfFiles(files, loaded_files)
|
||||
if files ~= nil then
|
||||
-- The caller may not have passed in loader_conf_files; we could
|
||||
-- have instead gotten some other string of files. We don't
|
||||
-- want to trigger any redundant re-read/loads based on this.
|
||||
local prefiles = loader.getenv("loader_conf_files")
|
||||
for name in files:gmatch("([%w%p]+)%s*") do
|
||||
if loaded_files[name] ~= nil then
|
||||
goto continue
|
||||
end
|
||||
|
||||
print("Loading " .. name)
|
||||
-- These may or may not exist, and that's ok. Do a
|
||||
-- silent parse so that we complain on parse errors but
|
||||
-- not for them simply not existing.
|
||||
if not config.processFile(name, true) then
|
||||
print(MSG_FAILPARSECFG:format(name))
|
||||
end
|
||||
|
||||
loaded_files[name] = true
|
||||
local newfiles = loader.getenv("loader_conf_files")
|
||||
if prefiles ~= newfiles then
|
||||
-- Recurse; process the new files immediately.
|
||||
-- If we come back and it turns out we've
|
||||
-- already loaded the rest of what was in the
|
||||
-- original loader_conf_files, no big deal.
|
||||
config.readConfFiles(newfiles, loaded_files)
|
||||
prefiles = newfiles
|
||||
end
|
||||
::continue::
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- other_kernel is optionally the name of a kernel to load, if not the default
|
||||
-- or autoloaded default from the module_path
|
||||
function config.loadKernel(other_kernel)
|
||||
@ -605,7 +607,7 @@ function config.load(file, reloading)
|
||||
end
|
||||
|
||||
local loaded_files = {file = true}
|
||||
readConfFiles(loaded_files)
|
||||
config.readConfFiles(loader.getenv("loader_conf_files"), loaded_files)
|
||||
|
||||
checkNextboot()
|
||||
|
||||
|
@ -26,7 +26,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 9, 2018
|
||||
.Dd April 27, 2020
|
||||
.Dt CONFIG.LUA 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -59,6 +59,15 @@ to
|
||||
A lookup will be done as needed to determine what value
|
||||
.Ev idx
|
||||
actually corresponds to.
|
||||
.It Fn config.readConfFiles files loaded_files
|
||||
Process
|
||||
.Ev files
|
||||
as if it were
|
||||
.Ev loader_conf_files .
|
||||
The caller may should pass in a table as the
|
||||
.Ev loaded_files
|
||||
argument, which uses filenames as keys and any non-nil value to indicate that
|
||||
the file named by the key has been loaded.
|
||||
.It Fn config.processFile name silent
|
||||
Process and parse
|
||||
.Ev name
|
||||
|
Loading…
Reference in New Issue
Block a user