@@ -124,14 +124,19 @@ def main(argv: List[str]) -> None:
124
124
try :
125
125
args .action (args )
126
126
except BadStatus as err :
127
- sys . exit (err .args [0 ])
127
+ fail (err .args [0 ])
128
128
except Exception :
129
129
# We do this explicitly to avoid exceptions percolating up
130
130
# through mypy.api invocations
131
131
traceback .print_exc ()
132
132
sys .exit (2 )
133
133
134
134
135
+ def fail (msg : str ) -> None :
136
+ print (msg , file = sys .stderr )
137
+ sys .exit (2 )
138
+
139
+
135
140
ActionFunction = Callable [[argparse .Namespace ], None ]
136
141
137
142
@@ -163,7 +168,7 @@ def do_start(args: argparse.Namespace) -> None:
163
168
# Bad or missing status file or dead process; good to start.
164
169
pass
165
170
else :
166
- sys . exit ("Daemon is still alive" )
171
+ fail ("Daemon is still alive" )
167
172
start_server (args )
168
173
169
174
@@ -193,7 +198,7 @@ def start_server(args: argparse.Namespace, allow_sources: bool = False) -> None:
193
198
from mypy .dmypy_server import daemonize , process_start_options
194
199
start_options = process_start_options (args .flags , allow_sources )
195
200
if daemonize (start_options , timeout = args .timeout , log_file = args .log_file ):
196
- sys .exit (1 )
201
+ sys .exit (2 )
197
202
wait_for_server ()
198
203
199
204
@@ -214,7 +219,7 @@ def wait_for_server(timeout: float = 5.0) -> None:
214
219
check_status (data )
215
220
print ("Daemon started" )
216
221
return
217
- sys . exit ("Timed out waiting for daemon to start" )
222
+ fail ("Timed out waiting for daemon to start" )
218
223
219
224
220
225
@action (run_parser )
@@ -263,7 +268,7 @@ def do_status(args: argparse.Namespace) -> None:
263
268
if args .verbose or 'error' in response :
264
269
show_stats (response )
265
270
if 'error' in response :
266
- sys . exit ("Daemon is stuck; consider %s kill" % sys .argv [0 ])
271
+ fail ("Daemon is stuck; consider %s kill" % sys .argv [0 ])
267
272
print ("Daemon is up and running" )
268
273
269
274
@@ -274,7 +279,7 @@ def do_stop(args: argparse.Namespace) -> None:
274
279
response = request ('stop' , timeout = 5 )
275
280
if response :
276
281
show_stats (response )
277
- sys . exit ("Daemon is stuck; consider %s kill" % sys .argv [0 ])
282
+ fail ("Daemon is stuck; consider %s kill" % sys .argv [0 ])
278
283
else :
279
284
print ("Daemon stopped" )
280
285
@@ -286,7 +291,7 @@ def do_kill(args: argparse.Namespace) -> None:
286
291
try :
287
292
kill (pid )
288
293
except OSError as err :
289
- sys . exit (str (err ))
294
+ fail (str (err ))
290
295
else :
291
296
print ("Daemon killed" )
292
297
@@ -332,11 +337,11 @@ def check_output(response: Dict[str, Any], verbose: bool, junit_xml: Optional[st
332
337
Call sys.exit() unless the status code is zero.
333
338
"""
334
339
if 'error' in response :
335
- sys . exit (response ['error' ])
340
+ fail (response ['error' ])
336
341
try :
337
342
out , err , status_code = response ['out' ], response ['err' ], response ['status' ]
338
343
except KeyError :
339
- sys . exit ("Response: %s" % str (response ))
344
+ fail ("Response: %s" % str (response ))
340
345
sys .stdout .write (out )
341
346
sys .stderr .write (err )
342
347
if verbose :
0 commit comments