You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.2 KiB
Lua
47 lines
1.2 KiB
Lua
--- Helper module for managing the config in the application.
|
|
-- @module lqc.config
|
|
-- @alias config
|
|
local config = {}
|
|
|
|
--- Helper function for getting the default random seed.
|
|
--
|
|
-- @return default seed used by the application (the current timestamp).
|
|
function config.default_seed()
|
|
return os.time()
|
|
end
|
|
|
|
local default_config = {
|
|
files_or_dirs = {'.'},
|
|
seed = config.default_seed(),
|
|
numtests = 100,
|
|
numshrinks = 100,
|
|
colors = false,
|
|
threads = 1,
|
|
check = false,
|
|
}
|
|
|
|
--- Checks if the argument is empty (nil or {}).
|
|
--
|
|
-- @param x Argument to check
|
|
-- @return true if arg is empty; otherwise false.
|
|
local function is_empty_arg(x)
|
|
return x == nil or (type(x) == 'table' and #x == 0)
|
|
end
|
|
|
|
--- Determines the config to use based on the table of supplied values.
|
|
-- If no value is supplied for a specific setting, a default value is used
|
|
-- (see top of file).
|
|
--
|
|
-- @return the updated config
|
|
function config.resolve(values)
|
|
for _, arg_name in ipairs {'files_or_dirs', 'seed', 'numtests', 'numshrinks', 'colors', 'threads', 'check'} do
|
|
if is_empty_arg(values[arg_name]) then
|
|
values[arg_name] = default_config[arg_name]
|
|
end
|
|
end
|
|
return values
|
|
end
|
|
|
|
return config
|
|
|