From 87fbf8b2a8f9c82bb9008a3c77330718177142a2 Mon Sep 17 00:00:00 2001 From: eroux Date: Fri, 26 Feb 2010 10:40:59 +0100 Subject: Executing fc-cache if necessary (to be tested further) --- update-luatex-font-database.lua | 42 ++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/update-luatex-font-database.lua b/update-luatex-font-database.lua index 2ba4849..6b68e68 100644 --- a/update-luatex-font-database.lua +++ b/update-luatex-font-database.lua @@ -36,6 +36,9 @@ Valid options: -vvv print all steps of directory searching -V --version prints the version and exits -h --help prints this message + --fc-cache run fc-cache before updating database + (default is to run it if available) + --no-fc-cache do not run fc-cache --sys writes the database for the whole system (default is only for the user) @@ -55,20 +58,40 @@ end ]] local long_opts = { - dbdir = "d", - quiet = "q", - verbose = 1, - version = "V", - help = "h", - sys = 0, + dbdir = "d", + quiet = "q", + verbose = 1, + version = "V", + help = "h", + sys = 0, + ['fc-cache'] = 0, + ['no-fc-cache'] = 0, } local short_opts = "d:qvVh" -local log_level = 1 +-- Function running fc-cache if needed. +-- The argument is nil for default, 0 for no fc-cache and 1 for fc-cache. +-- Default behaviour is to run fc-cache if available. +local function do_run_fc_cache(c) + if c == 0 then return end + if not c then + -- TODO: detect if fc-cache is available + end + local toexec = 'fc-cache' + if system == 'windows' then + toexec = 'fc-cache.exe' -- TODO: to test on a non-cygwin Windows + end + luaotfload.fonts.log(1, 'Executing %s...\n', toexec) + os.execute(toexec) +end + +-- a temporary variable, containing the command line option concerning fc-cache +local run_fc_cache = nil local function process_cmdline() local opts, optind, optarg = alt_getopt.get_ordered_opts (arg, short_opts, long_opts) + local log_level = 1 for i,v in ipairs(opts) do if v == "q" then log_level = 0 @@ -86,6 +109,10 @@ local function process_cmdline() os.exit(0) elseif v == "d" then luaotfload.fonts.directory = optarg [i] + elseif v == "fc-cache" then + run_fc_cache = 1 + elseif v == "no-fc-cache" then + run_fc_cache = 0 elseif v == "sys" then luaotfload.fonts.directory = kpse.expand_var("$TEXMFSYSVAR") .. "/tex/" end @@ -94,4 +121,5 @@ local function process_cmdline() end process_cmdline() +do_run_fc_cache(run_fc_cache) luaotfload.fonts.generate() -- cgit v1.2.3