36 lines
954 B
Lua
Executable File
36 lines
954 B
Lua
Executable File
#!/usr/libexec/flua
|
|
|
|
--[[ usage:
|
|
generare-ucl.lua [<variablename> <variablevalue>]... <sourceucl> <destucl>
|
|
|
|
In the <destucl> files the variable <variablename> (in the form ${variablename}
|
|
in the <sourceucl>) will be expanded to <variablevalue>.
|
|
|
|
The undefined variables will reamin unmofifier "${variablename}"
|
|
]]--
|
|
|
|
local ucl = require("ucl")
|
|
|
|
if #arg < 2 or #arg % 2 ~= 0 then
|
|
io.stderr:write(arg[0] .. ": expected an even number of arguments, got " .. #arg)
|
|
os.exit(1)
|
|
end
|
|
|
|
local parser = ucl.parser()
|
|
for i = 2, #arg - 2, 2 do
|
|
parser:register_variable(arg[i - 1], arg[i])
|
|
end
|
|
local res,err = parser:parse_file(arg[#arg - 1])
|
|
if not res then
|
|
io.stderr:write(arg[0] .. ": fail to parse("..arg[#arg - 1].."): "..err)
|
|
os.exit(1)
|
|
end
|
|
local f,err = io.open(arg[#arg], "w")
|
|
if not f then
|
|
io.stderr:write(arg[0] .. ": fail to open("..arg[#arg].."): ".. err)
|
|
os.exit(1)
|
|
end
|
|
local obj = parser:get_object()
|
|
f:write(ucl.to_format(obj, 'ucl'))
|
|
f:close()
|