From 0cd3288fafc16a9286d508fffff88e1d3a8509df Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Fri, 26 Feb 2010 08:33:46 +0200 Subject: Port to "alt_getopt" Now the options are handled the standard getopt_long way, with a hack to support multiple -v's, and --verbose now takes a required level argument. Also, we now use require() which already have built-in error checking (if it doesn't work on some system, then this is a bug to report). --- update-luatex-font-database.lua | 110 +++++++++++++++++++--------------------- 1 file changed, 52 insertions(+), 58 deletions(-) diff --git a/update-luatex-font-database.lua b/update-luatex-font-database.lua index c34c1c2..2ba4849 100644 --- a/update-luatex-font-database.lua +++ b/update-luatex-font-database.lua @@ -11,29 +11,27 @@ kpse.set_program_name("luatex") local name = 'update-luatex-font-database' local version = '1.07' -- same version number as luaotfload --- first we import luaotfload-fonts.lua. --- Basically it 'exports' three usefult things: the two overwritable variables --- - luaotfload.fonts.basename: the filename of the database --- - luaotfload.fonts.directory: the directory of the database --- and the function --- - luaotfload.fonts.generate: the function to generate the database +--[[ + first we import luaotfload-fonts.lua. + Basically it 'exports' three usefult things: the two overwritable variables + - luaotfload.fonts.basename: the filename of the database + - luaotfload.fonts.directory: the directory of the database + and the function + - luaotfload.fonts.generate: the function to generate the database +]] -local luaotfload_file = kpse.find_file("luaotfload-fonts.lua") -if not luaotfload_file then - texio.write_nl("Error: cannot find 'luaotfload-fonts.lua', exiting.") - os.exit(1) -end -dofile(luaotfload_file) +require("luaotfload-fonts") +require("alt_getopt") local function help_msg() - texio.write_nl(string.format([[Usage: %s [OPTION]... + texio.write_nl(string.format([[Usage: %s [OPTION]... Rebuild the LuaTeX font database. Valid options: -d --dbdir DIRECTORY writes the database in the specified directory -q --quiet don't output anything - -v --verbose be more verbose (print the searched directories) + -v --verbose=LEVEL be more verbose (print the searched directories) -vv print the loaded fonts -vvv print all steps of directory searching -V --version prints the version and exits @@ -50,53 +48,49 @@ local function version_msg() "%s version %s, database version %s.\n", name, version, luaotfload.fonts.version)) end --- Command-line processing. --- Here we fill cmdargs with the good values, and then analyze it, setting --- luaotfload.fonts.log_level luaotfload.fonts.directory if necessary. +--[[ + Command-line processing. + Here we fill cmdargs with the good values, and then analyze it, setting + luaotfload.fonts.log_level luaotfload.fonts.directory if necessary. +]] + +local long_opts = { + dbdir = "d", + quiet = "q", + verbose = 1, + version = "V", + help = "h", + sys = 0, +} + +local short_opts = "d:qvVh" + +local log_level = 1 + local function process_cmdline() - local waiting_for_dir = false - local cmdargs = {} - for _, varg in ipairs(arg) do - if varg == "-v" or varg == "--verbose" then - cmdargs.loglvl = 2 - elseif varg == "-vv" then - cmdargs.loglvl = 3 - elseif varg == "-vvv" then - cmdargs.loglvl = 4 - elseif varg == "-q" or varg == "--quiet" then - cmdargs.loglvl = 0 - elseif varg == "--version" or varg == "-V" then - cmdargs.version = true - elseif varg == "--help" or varg == "-h" then - cmdargs.help = true - elseif varg == "--sys" then - cmdargs.sys = true - elseif varg == '-d' or varg == '--dbdir' then - waiting_for_dir = true - elseif string.match(varg, '--dbdir=.+') then - cmdargs.dbdir = string.match(varg, '--dbdir=(.+)') - elseif string.match(varg, '-d.+') then - cmdargs.dbdir = string.match(varg, '-d(.+)') - elseif waiting_for_dir == true then - cmdargs.dbdir = string.gsub(varg, '^( *= *)', '') - else - texio.write_nl(string.format("Unknown option '%s', ignoring.", varg)) + local opts, optind, optarg = alt_getopt.get_ordered_opts (arg, short_opts, long_opts) + for i,v in ipairs(opts) do + if v == "q" then + log_level = 0 + elseif v == "v" then + if log_level > 0 then + log_level = log_level + 1 + else + log_level = 2 + end + elseif v == "V" then + version_msg() + os.exit(0) + elseif v == "h" then + help_msg() + os.exit(0) + elseif v == "d" then + luaotfload.fonts.directory = optarg [i] + elseif v == "sys" then + luaotfload.fonts.directory = kpse.expand_var("$TEXMFSYSVAR") .. "/tex/" end end - if cmdargs.help then - help_msg() - os.exit(0) - elseif cmdargs.version then - version_msg() - os.exit(0) - elseif cmdargs.loglvl then - luaotfload.fonts.log_level = cmdargs.loglvl - end - if cmdargs.sys then - luaotfload.fonts.directory = kpse.expand_var("$TEXMFSYSVAR") .. "/tex/" - elseif cmdargs.dbdir then - luaotfload.fonts.directory = cmdargs.dbdir - end + luaotfload.fonts.log_level = log_level end process_cmdline() -- cgit v1.2.3