Add helper scripts used by packages to validate site.conf

This commit is contained in:
Matthias Schiffer 2014-07-05 02:48:09 +02:00
parent 6e0c29fcdb
commit 17bf228884
3 changed files with 101 additions and 0 deletions

8
include/package.mk Normal file
View File

@ -0,0 +1,8 @@
include $(INCLUDE_DIR)/package.mk
# Annoyingly, make's shell function replaces all newlines with spaces, so we have to do some escaping work. Yuck.
define GluonCheckSite
[ -z "$$GLUONDIR" ] || sed -e 's/-@/\n/g' -e 's/+@/@/g' <<'END__GLUON__CHECK__SITE' | "$$GLUONDIR"/scripts/check_site.sh
$(shell cat $(1) | sed -ne '1h; 1!H; $$ {g; s/@/+@/g; s/\n/-@/g; p}')
END__GLUON__CHECK__SITE
endef

8
scripts/check_site.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/sh
export GLUON_SITE_CONFIG="$GLUONDIR/site/site.conf"
SITE_CONFIG_LUA=packages/gluon/gluon/gluon-core/files/usr/lib/lua/gluon/site_config.lua
CHECK_SITE_LIB=scripts/check_site_lib.lua
"$GLUONDIR"/openwrt/staging_dir/host/bin/lua -e "site = dofile(os.getenv('GLUONDIR') .. '/${SITE_CONFIG_LUA}'); dofile(os.getenv('GLUONDIR') .. '/${CHECK_SITE_LIB}'); dofile()"

View File

@ -0,0 +1,85 @@
local function loadvar(varname)
local ok, val = pcall(assert(loadstring('return site.' .. varname)))
if ok then
return val
else
return nil
end
end
local function assert_type(var, t, msg)
assert(type(var) == t, msg)
end
function need_string(varname, required)
local var = loadvar(varname)
if required == false and var == nil then
return nil
end
assert_type(var, 'string', "site.conf error: expected `" .. varname .. "' to be a string")
return var
end
function need_string_match(varname, pat, required)
local var = need_string(varname, required)
if not var then
return nil
end
assert(var:match(pat), "site.conf error: expected `" .. varname .. "' to match pattern `" .. pat .. "'")
return var
end
function need_number(varname, required)
local var = loadvar(varname)
if required == false and var == nil then
return nil
end
assert_type(var, 'number', "site.conf error: expected `" .. varname .. "' to be a number")
return var
end
function need_array(varname, subcheck, required)
local var = loadvar(varname)
if required == false and var == nil then
return nil
end
assert_type(var, 'table', "site.conf error: expected `" .. varname .. "' to be an array")
for _, e in ipairs(var) do
subcheck(e)
end
return var
end
function need_table(varname, subcheck, required)
local var = loadvar(varname)
if required == false and var == nil then
return nil
end
assert_type(var, 'table', "site.conf error: expected `" .. varname .. "' to be a table")
for k, v in pairs(var) do
subcheck(k, v)
end
return var
end
function need_string_array(varname, required)
return assert(pcall(need_array, varname, function(e) assert_type(e, 'string') end, required),
"site.conf error: expected `" .. varname .. "' to be a string array")
end