summaryrefslogtreecommitdiff
path: root/luaotfload-tool.lua
diff options
context:
space:
mode:
Diffstat (limited to 'luaotfload-tool.lua')
-rwxr-xr-xluaotfload-tool.lua77
1 files changed, 46 insertions, 31 deletions
diff --git a/luaotfload-tool.lua b/luaotfload-tool.lua
index 4afd9d1..801ae72 100755
--- a/luaotfload-tool.lua
+++ b/luaotfload-tool.lua
@@ -4,7 +4,7 @@
-- DESCRIPTION: database functionality
-- REQUIREMENTS: luaotfload 2.2
-- AUTHOR: Khaled Hosny, Élie Roux, Philipp Gesang
--- VERSION: 2.3a
+-- VERSION: 2.3b
-- LICENSE: GPL v2
-- MODIFIED: 2013-06-02 19:23:54+0200
-----------------------------------------------------------------------
@@ -161,8 +161,12 @@ require"luaotfload-override.lua" --- this populates the logs.* namespace
require"luaotfload-database"
require"alt_getopt"
-local version = "2.3" -- same version number as luaotfload
-local names = fonts.names
+local names = fonts.names
+
+local status_file = "luaotfload-status"
+local status = require (status_file)
+
+local version = "2.3b"
local sanitize_string = names.sanitize_string
@@ -190,11 +194,11 @@ This tool is part of the luaotfload package. Valid options are:
-V --version print version and exit
-h --help print this message
- --diagnose=CHECK run a self test procedure; one of “files”,
- “permissions”, or “repository”
+ --diagnose=CHECK run a self test procedure; one of "files",
+ "permissions", or "repository"
- --alias=<name> force behavior of “luaotfload-tool” or legacy
- “mkluatexfontdb”
+ --alias=<name> force behavior of "luaotfload-tool" or legacy
+ "mkluatexfontdb"
-------------------------------------------------------------------------------
DATABASE
@@ -228,7 +232,7 @@ The font database will be saved to
FONT CACHE
--cache=<directive> operate on font cache, where <directive> is
- “show”, “purge”, or “erase”
+ "show", "purge", or "erase"
The font cache will be written to
%s
@@ -248,8 +252,8 @@ Valid options:
-vvv print all steps of directory searching
-V --version print version and exit
-h --help print this message
- --alias=<name> force behavior of “luaotfload-tool” or legacy
- “mkluatexfontdb”
+ --alias=<name> force behavior of "luaotfload-tool" or legacy
+ "mkluatexfontdb"
The font database will be saved to
%s
@@ -280,11 +284,13 @@ end
local version_msg = function ( )
texiowrite_nl(stringformat(
- "%s version “%s”\n" .. -- no \z due to 5.1 compatibility
- "database version “%s”\n" ..
- "Lua interpreter: %s; version “%s”\n",
+ "%s version %q\n" .. -- no \z due to 5.1 compatibility
+ "revision %q\n" ..
+ "database version %q\n" ..
+ "Lua interpreter: %s; version %q\n",
config.luaotfload.self,
version,
+ status.notes.revision,
names.version,
runtime[1],
runtime[2]))
@@ -776,21 +782,21 @@ actions.query = function (job)
if success then
logs.names_report(false, 0,
- "resolve", "Font “%s” found!", query)
+ "resolve", "Font %q found!", query)
if subfont then
logs.names_report(false, 0, "resolve",
- "Resolved file name “%s”, subfont nr. “%s”",
+ "Resolved file name %q, subfont nr. %q",
foundname, subfont)
else
logs.names_report(false, 0, "resolve",
- "Resolved file name “%s”", foundname)
+ "Resolved file name %q", foundname)
end
if job.show_info then
show_font_info(foundname, query, job.full_info, job.warnings)
end
else
logs.names_report(false, 0,
- "resolve", "Cannot find “%s”.", query)
+ "resolve", "Cannot find %q.", query)
if job.fuzzy == true then
logs.names_report(false, 0,
"resolve", "Looking for close matches, this may take a while ...")
@@ -953,10 +959,10 @@ do
logs.names_report (false, 0, "diagnose", ...)
end
- local verify_files = function (errcnt, info)
+ local verify_files = function (errcnt, status)
out "================ verify files ================="
- local hashes = info.hashes
- local notes = info.notes
+ local hashes = status.hashes
+ local notes = status.notes
if not hashes or #hashes == 0 then
out ("FAILED: cannot read checksums from %s.", status_file)
return 1/0
@@ -1022,8 +1028,16 @@ do
return lpegmatch (p_permissions, raw)
end
+ local trailingslashes = P"/"^1 * P(-1)
+ local stripslashes = C((1 - trailingslashes)^0)
+
local get_permissions = function (t, location)
+ if stringsub (location, #location) == "/" then
+ --- strip trailing slashes (lfs idiosyncrasy on Win)
+ location = lpegmatch (stripslashes, location)
+ end
local attributes = lfsattributes (location)
+
if not attributes and t == "f" then
attributes = get_tentative_attributes (location)
if not attributes then
@@ -1129,8 +1143,8 @@ do
if kpsefind_file ("https.lua", "lua") == nil then
check_upstream = function (errcnt)
out [[============= upstream repository =============
- Github API access requires the luasec library.
WARNING: Cannot retrieve repository data.
+ Github API access requires the luasec library.
Grab it from <https://github.com/brunoos/luasec>
and retry.]]
return errcnt
@@ -1295,7 +1309,7 @@ do
release_url)
return true
else
- out "There weren’t any new releases in the meantime."
+ out "There weren't any new releases in the meantime."
out "Luaotfload is up to date."
end
return false
@@ -1321,7 +1335,6 @@ do
--- github api stuff end
local anamneses = { "files", "repository", "permissions" }
- local status_file = "luaotfload-status"
actions.diagnose = function (job)
local errcnt = 0
@@ -1333,21 +1346,23 @@ do
asked = tabletohash (asked, true)
end
- out "Loading file hashes."
- local info = require (status_file)
-
if asked.files == true then
- errcnt = verify_files (errcnt, info)
+ errcnt = verify_files (errcnt, status)
+ asked.files = nil
end
if asked.permissions == true then
errcnt = check_permissions (errcnt)
+ asked.permissions = nil
end
if asked.repository == true then
- --errcnt = check_upstream (info.notes.revision)
- check_upstream (info.notes.revision)
+ check_upstream (status.notes.revision)
+ asked.repository = nil
end
-
+ local rest = next (asked)
+ if rest ~= nil then --> something unknown
+ out ("Unknown diagnostic %q.", rest)
+ end
if errcnt == 0 then --> success
out ("Everything appears to be in order, \z
you may sleep well.")
@@ -1524,7 +1539,7 @@ local process_cmdline = function ( ) -- unit -> jobspec
result.help_version = "mkluatexfontdb"
action_pending["generate"] = true
result.log_level = math.max(1, result.log_level)
- logs.set_logout"stdout"
+ logs.set_logout("stdout", finalizers)
elseif nopts == 0 then
action_pending["help"] = true
result.help_version = "short"