summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--update-luatex-font-database.lua42
1 files 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()