Add helper scripts used by packages to validate site.conf
This commit is contained in:
parent
6e0c29fcdb
commit
17bf228884
8
include/package.mk
Normal file
8
include/package.mk
Normal 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
8
scripts/check_site.sh
Executable 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()"
|
85
scripts/check_site_lib.lua
Normal file
85
scripts/check_site_lib.lua
Normal 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
|
Loading…
Reference in New Issue
Block a user