luametalatex/luametalatex.lua

55 lines
1.7 KiB
Lua
Raw Normal View History

2019-07-17 21:14:34 +02:00
local format = os.selfname -- or os.selfcore, I couldn't find a difference yet
local ourname = arg[0] -- This might not be os.selfarg[0]
-- We want to drop arg[0] aka. ourname from the arguments to avoid recursion
2019-07-17 21:14:34 +02:00
if os.selfarg[0] == ourname then
ourname = nil
end
2020-07-17 03:59:44 +02:00
local run
2019-07-17 21:14:34 +02:00
for i, a in ipairs(os.selfarg) do
if a == ourname then -- Avoid recursion
table.remove(os.selfarg, i)
ourname = nil
a = os.selfarg[i]
end
if a == "--" then break end -- This convention is not respected by luametatex itself
-- LuaMetaTeX needs -- to introduce parameters,
-- but fmtutil uses just -. Let's rewrite this on the fly:
2019-07-17 21:14:34 +02:00
a = a:gsub("^%-%-?", "--")
os.selfarg[i] = a
if a:sub(1, 11) == "--progname=" then
format = a:sub(12)
end
2020-07-17 03:59:44 +02:00
if a:sub(1, 6) == "--run=" then
run = true
end
2019-07-17 21:14:34 +02:00
end
os.setenv("engine", status.luatex_engine)
local kpse_call = io.popen(string.format("kpsewhich -progname %s -format lua -all -must-exist %s-init.lua", format, format))
local file
repeat
file = kpse_call:read()
until not file:match('^%.')
if not kpse_call:close() then
error(file)
end
2020-07-17 03:59:44 +02:00
local geterrorcode
if os.type == 'windows' then
function geterrorcode(ec) return ec end
else
function geterrorcode(ec) return ec & 0xFF == 0 and ec >> 8 or 0xFF end
end
2020-06-14 02:48:15 +02:00
local args = os.selfarg[1] and " \"" .. table.concat(os.selfarg, "\" \"") .. "\"" or ""
2020-07-17 03:59:44 +02:00
if run then -- The user wants to take care of it
os.exit(geterrorcode(os.execute(string.format("luametatex \"--lua=%s\" --arg0=\"%s\"%s", file, os.selfarg[0], args))))
else
for i = 1, 5 do
local status = geterrorcode(os.execute(string.format("luametatex \"--lua=%s\" --arg0=\"%s\" --run=%i%s", file, os.selfarg[0], i, args)))
if status ~= 75 then
os.exit(status)
end
end
os.exit(75)
end