]]--
-module( "luci.uvl.validation", package.seeall )
+local os = require "os"
+local fs = require "nixio.fs"
+local sys = require "luci.sys"
+local ERR = require "luci.uvl.errors".error
-require("luci.fs")
-require("luci.sys")
+local ipairs, unpack, type, tostring = ipairs, unpack, type, tostring
+module "luci.uvl.validation"
function _exec( bin, args )
local cmd, output = "", nil
for _, v in ipairs({ bin, unpack(args) }) do
- cmd = cmd .. string.format("%q ",v):gsub("([%$`])","\\%1")
+ cmd = cmd .. ("%q " % v):gsub("([%$`])","\\%1")
end
- local tmpfile = "/tmp/uvl" .. luci.sys.uniqueid(8)
+ local tmpfile = "/tmp/uvl" .. sys.uniqueid(8)
local retval = os.execute( cmd .. " 1>" .. tmpfile .. " 2>" .. tmpfile )
- if luci.fs.access(tmpfile) then
- output = luci.fs.readfile(tmpfile)
- luci.fs.unlink(tmpfile)
+ if fs.access(tmpfile) then
+ output = fs.readfile(tmpfile)
+ fs.unlink(tmpfile)
end
return retval, output
end
function check( self, object )
- local item = object:option()
-
- if item.validators then
- for _, val in ipairs(item.validators) do
+ if object:scheme('validators') then
+ for _, val in ipairs(object:scheme('validators')) do
local ok, err = false, nil
+
+ local values = object:value()
+ values = type(values) == "table" and values or { values }
+
local args = {
- item.type, unpack(object.cref), item.datatype, object:value()
+ object:scheme('type'), object:scheme('datatype'),
+ object.cref[1], object.cref[2], object.cref[3] or '',
+ unpack(values)
}
if type(val) == "function" then
end
if not ok then
- return false, err
+ return false, ERR('SME_ERRVAL', object, {tostring(val), err})
end
end
end