|
|
|
@ -42,6 +42,12 @@ local valid_phase_list = {
|
|
|
|
|
}
|
|
|
|
|
valid_phases = utils.invert(valid_phase_list)
|
|
|
|
|
|
|
|
|
|
local valid_formats_list = {
|
|
|
|
|
'minimal',
|
|
|
|
|
'pretty',
|
|
|
|
|
}
|
|
|
|
|
valid_formats = utils.invert(valid_formats_list)
|
|
|
|
|
|
|
|
|
|
local valid_split_strategies_list = {
|
|
|
|
|
'none',
|
|
|
|
|
'phase',
|
|
|
|
@ -56,13 +62,20 @@ local function parse_cursor(opts, arg)
|
|
|
|
|
utils.assign(opts.start, cursor)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function parse_split_strategy(opts, strategy)
|
|
|
|
|
if not valid_split_strategies[strategy] then
|
|
|
|
|
qerror(('unknown split strategy: "%s"; expected one of: %s')
|
|
|
|
|
:format(strategy,
|
|
|
|
|
table.concat(valid_split_strategies_list, ', ')))
|
|
|
|
|
local function parse_enum(opts, valid, name, val)
|
|
|
|
|
if not valid[val] then
|
|
|
|
|
qerror(('unknown %s: "%s"; expected one of: %s')
|
|
|
|
|
:format(name, val, table.concat(valid, ', ')))
|
|
|
|
|
end
|
|
|
|
|
opts.split_strategy = strategy
|
|
|
|
|
opts[name] = val
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function parse_split_strategy(opts, strategy)
|
|
|
|
|
parse_enum(opts, valid_split_strategies, 'split_strategy', strategy)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function parse_format(opts, file_format)
|
|
|
|
|
parse_enum(opts, valid_formats, 'format', file_format)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function parse_positionals(opts, args, start_argidx)
|
|
|
|
@ -102,9 +115,15 @@ local function process_args(opts, args)
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- set defaults
|
|
|
|
|
opts.format = valid_formats_list[1]
|
|
|
|
|
opts.split_strategy = valid_split_strategies_list[1]
|
|
|
|
|
|
|
|
|
|
local positionals = argparse.processArgsGetopt(args, {
|
|
|
|
|
{'c', 'cursor', hasArg=true,
|
|
|
|
|
handler=function(optarg) parse_cursor(opts, optarg) end},
|
|
|
|
|
{'f', 'format', hasArg=true,
|
|
|
|
|
handler=function(optarg) parse_format(opts, optarg) end},
|
|
|
|
|
{'h', 'help', handler=function() opts.help = true end},
|
|
|
|
|
{'t', 'splitby', hasArg=true,
|
|
|
|
|
handler=function(optarg) parse_split_strategy(opts, optarg) end},
|
|
|
|
@ -114,7 +133,6 @@ local function process_args(opts, args)
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
opts.split_strategy = opts.split_strategy or valid_split_strategies_list[1]
|
|
|
|
|
return positionals
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|