diff options
| -rw-r--r-- | update-luatex-font-database.lua | 110 | 
1 files 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()  | 
