luci-0.11: merge r9560
[project/luci.git] / build / cbi2uvl.lua
index 9207bf816f1910f1c61393d5c5ec9e42dbce3029..7fe8ef5744e1057f5e63149a9f765c1bbaced856 100755 (executable)
@@ -1,4 +1,19 @@
 #!/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: index.lua 3548 2008-10-09 20:28:07Z Cyrus $
+]]--
+
 local cbi = require "luci.cbi"
 local i18n = require "luci.i18n"
 local util = require "luci.util"
@@ -8,14 +23,21 @@ if not arg[1] then
        os.exit(1)
 end
 
-i18n.load("default", "en")
-i18n.load("admin-core", "en")
-i18n.load("wifi", "en")
+i18n.load("base", "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)
 
@@ -30,51 +52,51 @@ 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.TypedSection) then
+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 
+       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 type boolean")
+                       print ("        option datatype boolean")
                elseif util.instanceof(opt, cbi.DynamicList) then
                        print ("        option type list")
                elseif util.instanceof(opt, cbi.ListValue) then
@@ -82,20 +104,20 @@ for i, sec in pairs(map.children) do if util.instanceof(sec, cbi.TypedSection) t
                        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 
+                               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")
@@ -108,4 +130,4 @@ for i, sec in pairs(map.children) do if util.instanceof(sec, cbi.TypedSection) t
                end
        end
        end
-end end
\ No newline at end of file
+end end