|
@@ -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
|