aboutsummaryrefslogtreecommitdiffstats
path: root/util/argparse.lua
diff options
context:
space:
mode:
Diffstat (limited to 'util/argparse.lua')
-rw-r--r--util/argparse.lua14
1 files changed, 12 insertions, 2 deletions
diff --git a/util/argparse.lua b/util/argparse.lua
index 9ece050a..7a55cb0b 100644
--- a/util/argparse.lua
+++ b/util/argparse.lua
@@ -1,6 +1,7 @@
local function parse(arg, config)
local short_params = config and config.short_params or {};
local value_params = config and config.value_params or {};
+ local array_params = config and config.array_params or {};
local parsed_opts = {};
@@ -30,7 +31,7 @@ local function parse(arg, config)
end
local param_k, param_v;
- if value_params[param] then
+ if value_params[param] or array_params[param] then
param_k, param_v = param, table.remove(arg, 1);
if not param_v then
return nil, "missing-value", raw_param;
@@ -44,8 +45,17 @@ local function parse(arg, config)
param_k, param_v = param, true;
end
end
+ param_k = param_k:gsub("%-", "_");
+ end
+ if array_params[param] then
+ if parsed_opts[param_k] then
+ table.insert(parsed_opts[param_k], param_v);
+ else
+ parsed_opts[param_k] = { param_v };
+ end
+ else
+ parsed_opts[param_k] = param_v;
end
- parsed_opts[param_k] = param_v;
end
for i = 1, #arg do
parsed_opts[i] = arg[i];