local _ENV = mkmodule('plugins.prospector')

local argparse = require('argparse')
local utils = require('utils')

local VALID_SHOW_VALUES = utils.invert{
    'summary', 'liquids', 'layers', 'features', 'ores',
    'gems',    'veins',   'shrubs', 'trees'
}

function parse_commandline(opts, ...)
    local show = {}
    local positionals = argparse.processArgsGetopt({...}, {
            {'h', 'help', handler=function() opts.help = true end},
            {'s', 'show', hasArg=true, handler=function(optarg)
                    show = argparse.stringList(optarg) end},
            {'v', 'values', handler=function() opts.value = true end},
        })

    for _,p in ipairs(positionals) do
        if p == 'all' then opts.hidden = true
        elseif p == 'hell' then
            opts.hidden = true
            opts.tube = true
        else
            qerror(('unknown keyword: "%s"'):format(p))
        end
    end

    if #show > 0 then
        for s in pairs(VALID_SHOW_VALUES) do
            opts[s] = false
        end
    end

    for _,s in ipairs(show) do
        if VALID_SHOW_VALUES[s] then
            opts[s] = true
        else
            qerror(('unknown report section: "%s"'):format(s))
        end
    end
end

return _ENV