xref: /freebsd/release/packages/generate-ucl.lua (revision f8e46fd6)
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