58
58
59
59
60
60
class Make :
61
- def __init__ (self , srcdir : str , builddir : str , opts : Sequence [str ]) -> None :
62
- self .srcdir = srcdir
63
- self .builddir = builddir
61
+ def __init__ (self , * , source_dir : str , build_dir : str , opts : Sequence [str ]) -> None :
62
+ self .source_dir = source_dir
63
+ self .build_dir = build_dir
64
64
self .opts = [* opts ]
65
65
66
- def builddir_join (self , * comps : str ) -> str :
67
- return path .join (self .builddir , * comps )
66
+ def build_dir_join (self , * comps : str ) -> str :
67
+ return path .join (self .build_dir , * comps )
68
68
69
69
def build_clean (self ) -> int :
70
- srcdir = path .abspath (self .srcdir )
71
- builddir = path .abspath (self .builddir )
72
- if not path .exists (self .builddir ):
70
+ source_dir = path .abspath (self .source_dir )
71
+ build_dir = path .abspath (self .build_dir )
72
+ if not path .exists (self .build_dir ):
73
73
return 0
74
- elif not path .isdir (self .builddir ):
75
- print ("Error: %r is not a directory!" % self .builddir )
74
+ elif not path .isdir (self .build_dir ):
75
+ print ("Error: %r is not a directory!" % self .build_dir )
76
76
return 1
77
- elif srcdir == builddir :
78
- print ("Error: %r is same as source directory!" % self .builddir )
77
+ elif source_dir == build_dir :
78
+ print ("Error: %r is same as source directory!" % self .build_dir )
79
79
return 1
80
- elif path .commonpath ([srcdir , builddir ]) == builddir :
81
- print ("Error: %r directory contains source directory!" % self .builddir )
80
+ elif path .commonpath ([source_dir , build_dir ]) == build_dir :
81
+ print ("Error: %r directory contains source directory!" % self .build_dir )
82
82
return 1
83
- print ("Removing everything under %r..." % self .builddir )
84
- for item in os .listdir (self .builddir ):
85
- rmtree (self .builddir_join (item ))
83
+ print ("Removing everything under %r..." % self .build_dir )
84
+ for item in os .listdir (self .build_dir ):
85
+ rmtree (self .build_dir_join (item ))
86
86
return 0
87
87
88
88
def build_help (self ) -> None :
@@ -105,7 +105,7 @@ def build_latexpdf(self) -> int:
105
105
if not makecmd .lower ().startswith ('make' ):
106
106
raise RuntimeError ('Invalid $MAKE command: %r' % makecmd )
107
107
try :
108
- with chdir (self .builddir_join ('latex' )):
108
+ with chdir (self .build_dir_join ('latex' )):
109
109
if '-Q' in self .opts :
110
110
with open ('__LATEXSTDOUT__' , 'w' ) as outfile :
111
111
returncode = subprocess .call ([makecmd ,
@@ -117,7 +117,7 @@ def build_latexpdf(self) -> int:
117
117
)
118
118
if returncode :
119
119
print ('Latex error: check %s' %
120
- self .builddir_join ('latex' , '__LATEXSTDOUT__' )
120
+ self .build_dir_join ('latex' , '__LATEXSTDOUT__' )
121
121
)
122
122
elif '-q' in self .opts :
123
123
returncode = subprocess .call (
@@ -129,7 +129,7 @@ def build_latexpdf(self) -> int:
129
129
)
130
130
if returncode :
131
131
print ('Latex error: check .log file in %s' %
132
- self .builddir_join ('latex' )
132
+ self .build_dir_join ('latex' )
133
133
)
134
134
else :
135
135
returncode = subprocess .call ([makecmd , 'all-pdf' ])
@@ -148,7 +148,7 @@ def build_latexpdfja(self) -> int:
148
148
if not makecmd .lower ().startswith ('make' ):
149
149
raise RuntimeError ('Invalid $MAKE command: %r' % makecmd )
150
150
try :
151
- with chdir (self .builddir_join ('latex' )):
151
+ with chdir (self .build_dir_join ('latex' )):
152
152
return subprocess .call ([makecmd , 'all-pdf' ])
153
153
except OSError :
154
154
print ('Error: Failed to run: %s' % makecmd )
@@ -163,41 +163,44 @@ def build_info(self) -> int:
163
163
if not makecmd .lower ().startswith ('make' ):
164
164
raise RuntimeError ('Invalid $MAKE command: %r' % makecmd )
165
165
try :
166
- with chdir (self .builddir_join ('texinfo' )):
166
+ with chdir (self .build_dir_join ('texinfo' )):
167
167
return subprocess .call ([makecmd , 'info' ])
168
168
except OSError :
169
169
print ('Error: Failed to run: %s' % makecmd )
170
170
return 1
171
171
172
172
def build_gettext (self ) -> int :
173
- dtdir = self .builddir_join ('gettext' , '.doctrees' )
173
+ dtdir = self .build_dir_join ('gettext' , '.doctrees' )
174
174
if self .run_generic_build ('gettext' , doctreedir = dtdir ) > 0 :
175
175
return 1
176
176
return 0
177
177
178
178
def run_generic_build (self , builder : str , doctreedir : str | None = None ) -> int :
179
179
# compatibility with old Makefile
180
- papersize = os .getenv ('PAPER' , '' )
181
- opts = self .opts
182
- if papersize in ('a4' , 'letter' ):
183
- opts .extend (['-D' , 'latex_elements.papersize=' + papersize + 'paper' ])
180
+ paper_size = os .getenv ('PAPER' , '' )
181
+ if paper_size in {'a4' , 'letter' }:
182
+ self .opts .extend (['-D' , f'latex_elements.papersize={ paper_size } paper' ])
184
183
if doctreedir is None :
185
- doctreedir = self .builddir_join ('doctrees' )
184
+ doctreedir = self .build_dir_join ('doctrees' )
186
185
187
- args = ['-b' , builder ,
188
- '-d' , doctreedir ,
189
- self .srcdir ,
190
- self .builddir_join (builder )]
191
- return build_main (args + opts )
186
+ args = [
187
+ '--builder' , builder ,
188
+ '--doctree-dir' , doctreedir ,
189
+ self .source_dir ,
190
+ self .build_dir_join (builder ),
191
+ ]
192
+ return build_main (args + self .opts )
192
193
193
194
194
195
def run_make_mode (args : Sequence [str ]) -> int :
195
196
if len (args ) < 3 :
196
197
print ('Error: at least 3 arguments (builder, source '
197
198
'dir, build dir) are required.' , file = sys .stderr )
198
199
return 1
199
- make = Make (args [1 ], args [2 ], args [3 :])
200
- run_method = 'build_' + args [0 ]
200
+
201
+ builder_name = args [0 ]
202
+ make = Make (source_dir = args [1 ], build_dir = args [2 ], opts = args [3 :])
203
+ run_method = f'build_{ builder_name } '
201
204
if hasattr (make , run_method ):
202
205
return getattr (make , run_method )()
203
- return make .run_generic_build (args [ 0 ] )
206
+ return make .run_generic_build (builder_name )
0 commit comments