luci/build/cbi2uvl.lua

136 lines
3.5 KiB
Lua
Raw Normal View History

2008-09-03 12:16:46 +00:00
#!/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
2008-12-23 21:39:38 +00:00
$Id$
]]--
2008-09-03 12:16:46 +00:00
local cbi = require "luci.cbi"
local i18n = require "luci.i18n"
local util = require "luci.util"
if not arg[1] then
util.perror("Usage %s path/to/cbi/model.lua [i18nfilename]" % arg[0])
os.exit(1)
end
i18n.load("default", "en")
i18n.load("admin-core", "en")
i18n.load("wifi", "en")
if arg[2] then
i18n.load(arg[2], "en")
end
2008-12-23 21:39:38 +00:00
if arg[3] then
pcall(function()
require "uci"
require "luci.model.uci".cursor = function(config, save)
return uci.cursor(config or arg[3] .. "/etc/config", save or arg[3] .. "/tmp/.uci")
end
end)
end
2008-09-03 12:16:46 +00:00
local map = cbi.load(arg[1])[1]
assert(map)
print ("package "..map.config)
print ("\nconfig package")
if #map.title > 0 then
print (" option title '%s'" % util.striptags(map.title))
end
if #map.description > 0 then
print (" option description '%s'" % util.striptags(map.description))
end
2008-12-23 21:39:38 +00:00
for i, sec in pairs(map.children) do if util.instanceof(sec, cbi.AbstractSection) then
2008-09-03 12:16:46 +00:00
print ("\nconfig section")
print (" option name '%s'" % sec.sectiontype)
print (" option package '%s'" % map.config)
2008-09-03 12:16:46 +00:00
if #sec.title > 0 then
print (" option title '%s'" % util.striptags(sec.title))
end
2008-09-03 12:16:46 +00:00
if #sec.description > 0 then
print (" option description '%s'" % util.striptags(sec.description))
end
2008-09-03 12:16:46 +00:00
if not sec.addremove then
print (" option unique true")
print (" option required true")
end
2008-09-03 12:16:46 +00:00
if not sec.anonymous then
print (" option named true")
end
2008-09-03 12:16:46 +00:00
if sec.dynamic then
print (" option dynamic true")
end
2008-09-03 12:16:46 +00:00
for j, opt in ipairs(sec.children) do
if opt.option:sub(1,1) ~= "_" or util.instanceof(opt, cbi.Value) then
2008-09-03 12:16:46 +00:00
print ("\nconfig variable")
print (" option name '%s'" % opt.option)
print (" option section '%s.%s'" % {map.config, sec.sectiontype})
if #opt.title > 0 then
print (" option title '%s'" % util.striptags(opt.title))
end
2008-09-03 12:16:46 +00:00
if #opt.description > 0 then
print (" option description '%s'" % util.striptags(opt.description))
end
2008-09-03 12:16:46 +00:00
if not opt.rmempty and not opt.optional then
print (" option required true")
end
2008-09-03 12:16:46 +00:00
if util.instanceof(opt, cbi.Flag) then
print (" option datatype boolean")
2008-09-03 12:16:46 +00:00
elseif util.instanceof(opt, cbi.DynamicList) then
print (" option type list")
elseif util.instanceof(opt, cbi.ListValue) then
print (" option type enum")
util.perror("*** Warning: Please verify '%s.%s.%s' ***" %
{map.config, sec.sectiontype, opt.option} )
end
2008-09-03 12:16:46 +00:00
for i, dep in ipairs(opt.deps) do
if not dep.add or dep.add == "" then
local depstring
for k, v in pairs(dep.deps) do
depstring = (depstring and depstring .. "," or "") .. "%s=%s" % {k, v}
end
2008-09-03 12:16:46 +00:00
print (" list depends '%s'" % depstring)
else
util.perror("*** Warning: Unable to decode dependency '%s' in '%s.%s.%s[%s]' ***" %
{util.serialize_data(dep.deps), map.config, sec.sectiontype, opt.option, dep.add})
end
end
2008-09-03 12:16:46 +00:00
if util.instanceof(opt, cbi.ListValue) then
for k, key in ipairs(opt.keylist) do
print ("\nconfig enum")
print (" option variable '%s.%s.%s'" % {map.config, sec.sectiontype, opt.option})
print (" option value '%s'" % key)
if opt.vallist[k] and opt.vallist[k] ~= opt.keylist[k] then
print (" option title '%s'" % util.striptags(opt.vallist[k]))
end
end
end
end
end
end end