Lua env config loader with typed defaults
Lua
local function load_env(spec, getenv)
getenv = getenv or os.getenv
local cfg = {}
for key, rule in pairs(spec) do
local raw = getenv(key)
if raw == nil or raw == '' then
if rule.default == nil then error('missing required env: ' .. key, 0) end
raw = rule.default
end
if rule.number then
local n = tonumber(raw)
if not n then error(('%s is not a number: %q'):format(key, raw), 0) end
raw = n
end
cfg[rule.as or key] = raw
end
return cfg
end
return load_env