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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
if not modules then modules = { } end modules ['mtx-base'] = {
version = 1.001,
comment = "formerly known as luatools",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
copyright = "PRAGMA ADE / ConTeXt Development Team",
license = "see context related readme files"
}
local helpinfo = [[
--generate generate file database
--variables show configuration variables
--configurations show configuration order
--expand-braces expand complex variable
--expand-path expand variable (resolve paths)
--expand-var expand variable (resolve references)
--show-path show path expansion of ...
--var-value report value of variable
--find-file report file location
--find-path report path of file
--make or --ini make luatex format
--run or --fmt= run luatex format
--compile assemble and compile lua inifile
--verbose give a bit more info
--all show all found files
--format=str filter cf format specification (default 'tex', use 'any' for any match)
--pattern=str filter variables
--trackers=list enable given trackers
]]
local application = logs.application {
name = "mtx-base",
banner = "ConTeXt TDS Management Tool 1.35 (aka luatools)",
helpinfo = helpinfo,
}
local report = application.report
-- private option --noluc for testing errors in the stub
local instance = resolvers.instance
local pattern = environment.arguments["pattern"] or nil
local fileformat = environment.arguments["format"] or "" -- nil ?
local allresults = environment.arguments["all"] or false
local trace = environment.arguments["trace"]
if type(pattern) == 'boolean' then
report("invalid pattern specification")
pattern = nil
end
if trace then
resolvers.settrace(trace) -- move to mtxrun ?
end
if environment.arguments["find-file"] then
resolvers.load()
if pattern then
resolvers.dowithfilesandreport(resolvers.findfiles, { pattern }, fileformat, allresults)
else
resolvers.dowithfilesandreport(resolvers.findfiles, environment.files, fileformat, allresults)
end
elseif environment.arguments["find-path"] then
resolvers.load()
local path = resolvers.findpath(environment.files[1], fileformat)
print(path) -- quite basic, wil become function in logs
elseif environment.arguments["run"] then
resolvers.load("nofiles") -- ! no need for loading databases
trackers.enable("resolvers.locating")
environment.run_format(environment.files[1] or "",environment.files[2] or "",environment.files[3] or "")
elseif environment.arguments["fmt"] then
resolvers.load("nofiles") -- ! no need for loading databases
trackers.enable("resolvers.locating")
environment.run_format(environment.arguments["fmt"], environment.files[1] or "",environment.files[2] or "")
elseif environment.arguments["expand-braces"] then
resolvers.load("nofiles")
resolvers.dowithfilesandreport(resolvers.expandbraces, environment.files)
elseif environment.arguments["expand-path"] then
resolvers.load("nofiles")
resolvers.dowithfilesandreport(resolvers.expandpath, environment.files)
elseif environment.arguments["expand-var"] or environment.arguments["expand-variable"] then
resolvers.load("nofiles")
resolvers.dowithfilesandreport(resolvers.expansion, environment.files)
elseif environment.arguments["show-path"] or environment.arguments["path-value"] then
resolvers.load("nofiles")
resolvers.dowithfilesandreport(resolvers.showpath, environment.files)
elseif environment.arguments["var-value"] or environment.arguments["show-value"] then
resolvers.load("nofiles")
resolvers.dowithfilesandreport(resolvers.variable, environment.files)
elseif environment.arguments["format-path"] then
resolvers.load()
report(caches.getwritablepath("format"))
elseif pattern then -- brrr
resolvers.load()
resolvers.dowithfilesandreport(resolvers.findfiles, { pattern }, fileformat, allresults)
elseif environment.arguments["generate"] then
instance.renewcache = true
trackers.enable("resolvers.locating")
resolvers.load()
elseif environment.arguments["make"] or environment.arguments["ini"] or environment.arguments["compile"] then
resolvers.load()
trackers.enable("resolvers.locating")
environment.make_format(environment.files[1] or "")
elseif environment.arguments["variables"] or environment.arguments["show-variables"] or environment.arguments["expansions"] or environment.arguments["show-expansions"] then
resolvers.load("nofiles")
resolvers.listers.variables(pattern)
elseif environment.arguments["configurations"] or environment.arguments["show-configurations"] then
resolvers.load("nofiles")
resolvers.listers.configurations()
elseif environment.arguments["help"] or (environment.files[1]=='help') or (#environment.files==0) then
application.help()
elseif environment.files[1] == 'texmfcnf.lua' then
resolvers.load("nofiles")
resolvers.listers.configurations()
else
resolvers.load()
resolvers.dowithfilesandreport(resolvers.findfiles, environment.files, fileformat, allresults)
end
|