136 lines
3.6 KiB
Lua
136 lines
3.6 KiB
Lua
|
#!/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: cbi2uvl.lua 3941 2008-12-23 21:39:38Z jow $
|
||
|
]]--
|
||
|
|
||
|
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
|
||
|
|
||
|
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
|
||
|
|
||
|
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
|
||
|
|
||
|
for i, sec in pairs(map.children) do if util.instanceof(sec, cbi.AbstractSection) then
|
||
|
print ("\nconfig section")
|
||
|
print (" option name '%s'" % sec.sectiontype)
|
||
|
print (" option package '%s'" % map.config)
|
||
|
|
||
|
if #sec.title > 0 then
|
||
|
print (" option title '%s'" % util.striptags(sec.title))
|
||
|
end
|
||
|
|
||
|
if #sec.description > 0 then
|
||
|
print (" option description '%s'" % util.striptags(sec.description))
|
||
|
end
|
||
|
|
||
|
if not sec.addremove then
|
||
|
print (" option unique true")
|
||
|
print (" option required true")
|
||
|
end
|
||
|
|
||
|
if not sec.anonymous then
|
||
|
print (" option named true")
|
||
|
end
|
||
|
|
||
|
if sec.dynamic then
|
||
|
print (" option dynamic true")
|
||
|
end
|
||
|
|
||
|
for j, opt in ipairs(sec.children) do
|
||
|
if opt.option:sub(1,1) ~= "_" or util.instanceof(opt, cbi.Value) then
|
||
|
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
|
||
|
|
||
|
if #opt.description > 0 then
|
||
|
print (" option description '%s'" % util.striptags(opt.description))
|
||
|
end
|
||
|
|
||
|
if not opt.rmempty and not opt.optional then
|
||
|
print (" option required true")
|
||
|
end
|
||
|
|
||
|
if util.instanceof(opt, cbi.Flag) then
|
||
|
print (" option datatype boolean")
|
||
|
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
|
||
|
|
||
|
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
|
||
|
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
|
||
|
|
||
|
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
|