1if not modules then modules = { } end modules ['core-sys'] = {
2 version = 1.001,
3 comment = "companion to core-sys.mkiv",
4 author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
5 copyright = "PRAGMA ADE / ConTeXt Development Team",
6 license = "see context related readme files"
7}
8
9local lower, format, gsub = string.lower, string.format, string.gsub
10local suffixonly, basename, removesuffix = file.suffix, file.basename, file.removesuffix
11
12local environment = environment
13local context = context
14local implement = interfaces.implement
15
16local report_files = logs.reporter("system","files")
17
18function environment.initializefilenames()
19
20 local arguments = environment.arguments
21
22 local jobname = arguments.jobname
23 local fulljobname = arguments.fulljobname
24 local inputfilename = arguments.input
25
26 if not fulljobname then
27 fulljobname = inputfilename or tex.jobname
28 end
29 if not inputfilename then
30 inputfilename = fulljobname
31 end
32 if not jobname then
33 jobname = removesuffix(fulljobname)
34 end
35
36 local inputfilebase = basename(inputfilename)
37 local outputfilename = type(arguments.result) =="string" and arguments.result or removesuffix(fulljobname)
38
39
40
41 local filename = fulljobname
42 local suffix = suffixonly(filename)
43
44 local filename = ctxrunner.resolve(filename)
45
46 local jobfilename = jobname
47 local jobfilebase = basename(jobfilename)
48
49
50
51
52 environment.jobfilefullname = fulljobname
53 environment.jobfilename = jobfilebase
54 environment.jobfilesuffix = lower(suffixonly(jobfilebase))
55
56 environment.inputfilename = inputfilename
57 environment.inputfilebarename = removesuffix(inputfilebase)
58 environment.inputfilesuffix = lower(suffixonly(inputfilebase))
59
60 environment.outputfilename = outputfilename or environment.inputfilebarename or ""
61
62 environment.filename = filename
63 environment.suffix = suffix
64
65
66
67
68
69 report_files("jobname %a, input %a, result %a",jobfilename,inputfilename,outputfilename)
70
71 function environment.initializefilenames() end
72end
73
74
75
76implement { name = "operatingsystem", public = true, actions = function() context(os.platform) end }
77implement { name = "jobfilefullname", public = true, actions = function() context(environment.jobfilefullname) end }
78implement { name = "jobfilename", public = true, actions = function() context(environment.jobfilename) end }
79implement { name = "jobfilesuffix", public = true, actions = function() context(environment.jobfilesuffix) end }
80implement { name = "inputfilebarename", public = true, actions = function() context(environment.inputfilebarename) end }
81implement { name = "inputfilerealsuffix", public = true, actions = function() context(environment.inputfilerealsuffix) end }
82implement { name = "inputfilesuffix", public = true, actions = function() context(environment.inputfilesuffix) end }
83implement { name = "inputfilename", public = true, actions = function() context(environment.inputfilename) end }
84implement { name = "outputfilename", public = true, actions = function() context(environment.outputfilename) end }
85
86implement {
87 name = "systemlog",
88 arguments = "3 strings",
89 public = true,
90 protected = true,
91 actions = function(whereto,category,text)
92 logs.system(whereto,"context",tex.jobname,category,text)
93 end,
94}
95 |