summaryrefslogtreecommitdiff
path: root/scripts/context/lua/mtx-metatex.lua
blob: ff13d00e3177fdb35a6ed074a3c8b4b16a51e37e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
if not modules then modules = { } end modules ['mtx-metatex'] = {
    version   = 1.001,
    comment   = "companion to mtxrun.lua",
    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
    copyright = "PRAGMA ADE / ConTeXt Development Team",
    license   = "see context related readme files"
}

-- future versions will deal with specific variants of metatex

local helpinfo = [[
<?xml version="1.0"?>
<application>
 <metadata>
  <entry name="name">mtx-metatex</entry>
  <entry name="detail">MetaTeX Process Management</entry>
  <entry name="version">0.10</entry>
 </metadata>
 <flags>
  <category name="basic">
   <subcategory>
    <flag name="run"><short>process (one or more) files (default action)</short></flag>
    <flag name="make"><short>create metatex format(s)</short></flag>
   </subcategory>
  </category>
 </flags>
</application>
]]

local application = logs.application {
    name     = "mtx-metatex",
    banner   = "MetaTeX Process Management 0.10",
    helpinfo = helpinfo,
}

local report = application.report

scripts         = scripts         or { }
scripts.metatex = scripts.metatex or { }

-- metatex

function scripts.metatex.make()
    environment.make_format("metatex")
end

function scripts.metatex.run(ctxdata,filename)
    local filename = environment.files[1] or ""
    if filename ~= "" then
        local formatfile, scriptfile = resolvers.locateformat("metatex")
        if formatfile and scriptfile then
            local command = string.format("luatex --fmt=%s --lua=%s  %s",
                string.quote(formatfile), string.quote(scriptfile), string.quote(filename))
            report("running command: %s",command)
            os.spawn(command)
        elseif formatname then
            report("error, no format found with name: %s",formatname)
        else
            report("error, no format found (provide formatname or interface)")
        end
    end
end

function scripts.metatex.timed(action)
    statistics.timed(action)
end

if environment.argument("run") then
    scripts.metatex.timed(scripts.metatex.run)
elseif environment.argument("make") then
    scripts.metatex.timed(scripts.metatex.make)
elseif environment.argument("help") then
    logs.help(messages.help,false)
elseif environment.argument("exporthelp") then
    application.export(environment.argument("exporthelp"),environment.files[1])
elseif environment.files[1] then
    scripts.metatex.timed(scripts.metatex.run)
else
    application.help()
end