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