summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhaled Hosny <khaledhosny@eglug.org>2010-02-26 08:33:46 +0200
committerKhaled Hosny <khaledhosny@eglug.org>2010-02-26 08:59:57 +0200
commit0cd3288fafc16a9286d508fffff88e1d3a8509df (patch)
treef1e3d8cc069f2cb0481b089a20f720bcbd965c40
parent5c7aa28a7af2a186c1c0cba4a36cdd688c679e15 (diff)
downloadluaotfload-0cd3288fafc16a9286d508fffff88e1d3a8509df.tar.gz
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).
-rw-r--r--update-luatex-font-database.lua110
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()