1*f8e46fd6SBaptiste Daroussin#!/usr/libexec/flua 2*f8e46fd6SBaptiste Daroussin 3*f8e46fd6SBaptiste Daroussin--[[ usage: 4*f8e46fd6SBaptiste Daroussingenerare-ucl.lua [<variablename> <variablevalue>]... <sourceucl> <destucl> 5*f8e46fd6SBaptiste Daroussin 6*f8e46fd6SBaptiste DaroussinIn the <destucl> files the variable <variablename> (in the form ${variablename} 7*f8e46fd6SBaptiste Daroussinin the <sourceucl>) will be expanded to <variablevalue>. 8*f8e46fd6SBaptiste Daroussin 9*f8e46fd6SBaptiste DaroussinThe undefined variables will reamin unmofifier "${variablename}" 10*f8e46fd6SBaptiste Daroussin]]-- 11*f8e46fd6SBaptiste Daroussin 12*f8e46fd6SBaptiste Daroussinlocal ucl = require("ucl") 13*f8e46fd6SBaptiste Daroussin 14*f8e46fd6SBaptiste Daroussinif #arg < 2 or #arg % 2 ~= 0 then 15*f8e46fd6SBaptiste Daroussin io.stderr:write(arg[0] .. ": expected an even number of arguments, got " .. #arg) 16*f8e46fd6SBaptiste Daroussin os.exit(1) 17*f8e46fd6SBaptiste Daroussinend 18*f8e46fd6SBaptiste Daroussin 19*f8e46fd6SBaptiste Daroussinlocal parser = ucl.parser() 20*f8e46fd6SBaptiste Daroussinfor i = 2, #arg - 2, 2 do 21*f8e46fd6SBaptiste Daroussin parser:register_variable(arg[i - 1], arg[i]) 22*f8e46fd6SBaptiste Daroussinend 23*f8e46fd6SBaptiste Daroussinlocal res,err = parser:parse_file(arg[#arg - 1]) 24*f8e46fd6SBaptiste Daroussinif not res then 25*f8e46fd6SBaptiste Daroussin io.stderr:write(arg[0] .. ": fail to parse("..arg[#arg - 1].."): "..err) 26*f8e46fd6SBaptiste Daroussin os.exit(1) 27*f8e46fd6SBaptiste Daroussinend 28*f8e46fd6SBaptiste Daroussinlocal f,err = io.open(arg[#arg], "w") 29*f8e46fd6SBaptiste Daroussinif not f then 30*f8e46fd6SBaptiste Daroussin io.stderr:write(arg[0] .. ": fail to open("..arg[#arg].."): ".. err) 31*f8e46fd6SBaptiste Daroussin os.exit(1) 32*f8e46fd6SBaptiste Daroussinend 33*f8e46fd6SBaptiste Daroussinlocal obj = parser:get_object() 34*f8e46fd6SBaptiste Daroussinf:write(ucl.to_format(obj, 'ucl')) 35*f8e46fd6SBaptiste Daroussinf:close() 36