1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
-- main.tlu: default command-line interface of texdoc
--
-- Manuel Pégourié-Gonnard, GPLv3, see texdoclib.tlu for details
-- load texdoclib (kpse initialized by the wrapper)
local texdoc = require('texdoc.texdoclib')
-- exit codes
local exit_ok = 0
local exit_error = 1 -- apparently hard-coded in Lua
local exit_usage = 2
-- action command-line options, not treated by setup_config_and_alias
local action_help = [[
-h, --help Print this help message.
-V, --version Print the version number.
-f, --files Print the list of configuration files used.
--just-view file Display file, given with full path (no searching).]]
local action_opts = {
['-h'] = 'help',
['--help'] = 'help',
['-V'] = 'version',
['--version'] = 'version',
['-f'] = 'files',
['--files'] = 'files',
['--just-view'] = 'view',
}
-- detect action options, but do not act now (some need setup_config)
local action
if arg[1] then
action = action_opts[arg[1]]
if action then table.remove(arg, 1) end
end
-- get configuration
if not texdoc.setup_config_and_alias(arg) then
os.exit(exit_usage)
end
-- handle action options
if action == 'help' then
texdoc.print_usage(action_help)
os.exit(exit_ok)
elseif action == 'version' then
print(texdoc.const.progname .. ' ' .. texdoc.const.version)
print('\n' .. texdoc.const.copyright_msg)
os.exit(exit_ok)
elseif action =='files' then
print(texdoc.const.fullname .. ' ' .. texdoc.const.version)
texdoc.show_config_files(print, true)
os.exit(exit_ok)
elseif action == 'view' then
local ok = texdoc.view_file(arg[1])
os.exit(ok and exit_ok or exit_error)
end
-- make sure we actually have argument(s)
if not arg[1] then
texdoc.print_usage()
os.exit(exit_usage)
end
-- initialise databases
texdoc.init_databases()
-- main loop
local docname
for _, docname in ipairs(arg) do
-- do we have more then one argument?
local multiarg = not not arg[2]
-- get results
local doclist = texdoc.get_doclist(docname)
-- deliver results to the user
texdoc.deliver_results(docname, doclist, multiarg)
end
-- the end
os.exit(exit_ok)
|