1if not modules then modules = { } end modules [ ' mtx-texworks ' ] = {
2 version = 1 . 002 ,
3 comment = " companion to mtxrun.lua " ,
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 helpinfo = [[
10<?xml version="1.0"?>
11<application>
12 <metadata>
13 <entry name="name">mtx-texworks</entry>
14 <entry name="detail">TeXworks Startup Script</entry>
15 <entry name="version">1.00</entry>
16 </metadata>
17 <flags>
18 <category name="basic">
19 <subcategory>
20 <flag name="start"><short>[<ref name="verbose]"/> start texworks</short></flag>
21 <flag name="test"><short>report what will happen</short></flag>
22 </subcategory>
23 </category>
24 </flags>
25</application>
26 ]]
27
28local application = logs . application {
29 name = " mtx-texworks " ,
30 banner = " TeXworks Startup Script 1.00 " ,
31 helpinfo = helpinfo ,
32}
33
34local report = application . report
35
36scripts = scripts or { }
37scripts . texworks = scripts . texworks or { }
38
39local texworkspaths = {
40 " completion " ,
41 " configuration " ,
42 " dictionaries " ,
43 " translations " ,
44 " scripts " ,
45 " templates " ,
46 " TUG "
47}
48
49local texworkssignal = " texworks-context.rme "
50local texworkininame = " texworks.ini "
51
52function scripts . texworks . start ( indeed )
53 local workname = ( os . type = = " windows " and " texworks.exe " ) or " texworks "
54 local fullname = nil
55 local binpaths = file . splitpath ( os . getenv ( " PATH " ) ) or file . splitpath ( os . getenv ( " path " ) )
56 local usedsignal = texworkssignal
57 local datapath = resolvers . findfile ( usedsignal , " other text files " ) or " "
58 if datapath ~ = " " then
59 datapath = file . dirname ( datapath )
60 if datapath = = " " then
61 datapath = resolvers . cleanpath ( lfs . currentdir ( ) )
62 end
63 else
64 usedsignal = texworkininame
65 datapath = resolvers . findfile ( usedsignal , " other text files " ) or " "
66 if datapath = = " " then
67 usedsignal = string . lower ( usedsignal )
68 datapath = resolvers . findfile ( usedsignal , " other text files " ) or " "
69 end
70 if datapath ~ = " " and lfs . isfile ( datapath ) then
71 datapath = file . dirname ( datapath )
72 datapath = file . dirname ( datapath )
73 if datapath = = " " then
74 datapath = resolvers . cleanpath ( lfs . currentdir ( ) )
75 end
76 end
77 end
78 if datapath = = " " then
79 report ( " invalid datapath, maybe you need to regenerate the file database " )
80 return false
81 end
82 if not binpaths or # binpaths = = 0 then
83 report ( " invalid binpath " )
84 return false
85 end
86 for i = 1 , # binpaths do
87 local p = file . join ( binpaths [ i ] , workname )
88 if lfs . isfile ( p ) and lfs . attributes ( p , " size " ) > 10000 then
89 fullname = p
90 break
91 end
92 end
93 if not fullname then
94 report ( " unable to locate %s " , workname )
95 return false
96 end
97 for i = 1 , # texworkspaths do
98 dir . makedirs ( file . join ( datapath , texworkspaths [ i ] ) )
99 end
100 os . setenv ( " TW_INIPATH " , datapath )
101 os . setenv ( " TW_LIBPATH " , datapath )
102 if not indeed or environment . argument ( " verbose " ) then
103 report ( " used signal: %s " , usedsignal )
104 report ( " data path : %s " , datapath )
105 report ( " full name : %s " , fullname )
106 report ( " set paths : TW_INIPATH TW_LIBPATH " )
107 end
108 if indeed then
109 os . launch ( fullname )
110 end
111end
112
113if environment . argument ( " start " ) then
114 scripts . texworks . start ( true )
115elseif environment . argument ( " test " ) then
116 scripts . texworks . start ( )
117elseif environment . argument ( " exporthelp " ) then
118 application . export ( environment . argument ( " exporthelp " ) , environment . files [ 1 ] )
119else
120 application . help ( )
121end
122 |