diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2008-10-23 02:23:54 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2008-10-23 02:23:54 +0000 |
commit | 1a830a559bfc7ef2e8f8156d505f85724d7ffcca (patch) | |
tree | 9081102d0ac7164b4b91e6916f4870ad6f23665b /build/uvl2cbi.lua | |
parent | 0ba0030745c3c23a3343484341575e127fb483f3 (diff) |
* luci/build: add uvl2cbi code gnerator and license foo
Diffstat (limited to 'build/uvl2cbi.lua')
-rw-r--r-- | build/uvl2cbi.lua | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/build/uvl2cbi.lua b/build/uvl2cbi.lua new file mode 100644 index 000000000..36cf6b736 --- /dev/null +++ b/build/uvl2cbi.lua @@ -0,0 +1,88 @@ +#!/usr/bin/lua +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth <steven@midlink.org> +Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +$Id$ +]]-- + +local uvl = require "luci.uvl" +local util = require "luci.util" + +if not arg[1] then + util.perror("Usage %s scheme_name" % arg[0]) + os.exit(1) +end + + + +local scheme, error = uvl.UVL():get_scheme(arg[1]) + +if not scheme then + print( error:string() ) + os.exit(1) +end + + +print('cbimap = Map(%q, %q, %q)\n' + % { scheme.name, scheme.title or scheme.name, scheme.description or "" } ) + + +for sn, sv in util.kspairs(scheme.sections) do + print('%s = cbimap:section(TypedSection, %q, %q, %q)' + % { sn, sn, sv.title or "", sv.description or "" } ) + + if not sv.named then print('%s.anonymous = true' % sn) end + if not sv.unique then print('%s.addremove = true' % sn) end + if sv.dynamic then print('%s.dynamic = true' % sn) end + + if sv.depends then + for _, dep in ipairs(sv.depends) do + print('%s:depends(%s)' % { sn, util.serialize_data(dep) } ) + end + end + + print('') + + for vn, vv in util.kspairs(scheme.variables[sn]) do + if not vv.type or vv.type == "variable" then + print('%s = %s:option(%s, %q, %q, %q)' + % { vn, sn, vv.datatype == "boolean" and "Flag" or "Value", + vn, vv.title or "", vv.description or "" } ) + elseif vv.type == "enum" then + print('%s = %s:option(%s, %q, %q, %q)' + % { vn, sn, vv.multival and "MultiValue" or "ListValue", + vn, vv.title or "", vv.description or "" } ) + + for _, val in ipairs(vv.valuelist or {}) do + print('%s:value(%q, %q)' + % { vn, val.value, val.title or val.value } ) + end + elseif vv.type == "list" or vv.type == "lazylist" then + print('%s = %s:option(DynamicList, %q, %q, %q)' + % { vn, sn, vn, vv.title or "", vv.description or "" } ) + else + print('-- option: type(%s) ?' % { vv.type or "" } ) + end + + if vv.default then print('%s.default = %q' % { vn, vv.default } ) end + if vv.required then print('%s.optional = false' % vn ) end + if not vv.required then print('%s.rmempty = true' % vn ) end + + for _, dep in ipairs(vv.depends or {}) do + print('%s:depends(%s)' % { vn, util.serialize_data(dep) } ) + end + + print('') + end + + print('\nreturn cbimap') +end |