@@ -124,14 +124,19 @@ def main(argv: List[str]) -> None:
124124 try :
125125 args .action (args )
126126 except BadStatus as err :
127- sys . exit (err .args [0 ])
127+ fail (err .args [0 ])
128128 except Exception :
129129 # We do this explicitly to avoid exceptions percolating up
130130 # through mypy.api invocations
131131 traceback .print_exc ()
132132 sys .exit (2 )
133133
134134
135+ def fail (msg : str ) -> None :
136+ print (msg , file = sys .stderr )
137+ sys .exit (2 )
138+
139+
135140ActionFunction = Callable [[argparse .Namespace ], None ]
136141
137142
@@ -163,7 +168,7 @@ def do_start(args: argparse.Namespace) -> None:
163168 # Bad or missing status file or dead process; good to start.
164169 pass
165170 else :
166- sys . exit ("Daemon is still alive" )
171+ fail ("Daemon is still alive" )
167172 start_server (args )
168173
169174
@@ -193,7 +198,7 @@ def start_server(args: argparse.Namespace, allow_sources: bool = False) -> None:
193198 from mypy .dmypy_server import daemonize , process_start_options
194199 start_options = process_start_options (args .flags , allow_sources )
195200 if daemonize (start_options , timeout = args .timeout , log_file = args .log_file ):
196- sys .exit (1 )
201+ sys .exit (2 )
197202 wait_for_server ()
198203
199204
@@ -214,7 +219,7 @@ def wait_for_server(timeout: float = 5.0) -> None:
214219 check_status (data )
215220 print ("Daemon started" )
216221 return
217- sys . exit ("Timed out waiting for daemon to start" )
222+ fail ("Timed out waiting for daemon to start" )
218223
219224
220225@action (run_parser )
@@ -263,7 +268,7 @@ def do_status(args: argparse.Namespace) -> None:
263268 if args .verbose or 'error' in response :
264269 show_stats (response )
265270 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 ])
267272 print ("Daemon is up and running" )
268273
269274
@@ -274,7 +279,7 @@ def do_stop(args: argparse.Namespace) -> None:
274279 response = request ('stop' , timeout = 5 )
275280 if response :
276281 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 ])
278283 else :
279284 print ("Daemon stopped" )
280285
@@ -286,7 +291,7 @@ def do_kill(args: argparse.Namespace) -> None:
286291 try :
287292 kill (pid )
288293 except OSError as err :
289- sys . exit (str (err ))
294+ fail (str (err ))
290295 else :
291296 print ("Daemon killed" )
292297
@@ -332,11 +337,11 @@ def check_output(response: Dict[str, Any], verbose: bool, junit_xml: Optional[st
332337 Call sys.exit() unless the status code is zero.
333338 """
334339 if 'error' in response :
335- sys . exit (response ['error' ])
340+ fail (response ['error' ])
336341 try :
337342 out , err , status_code = response ['out' ], response ['err' ], response ['status' ]
338343 except KeyError :
339- sys . exit ("Response: %s" % str (response ))
344+ fail ("Response: %s" % str (response ))
340345 sys .stdout .write (out )
341346 sys .stderr .write (err )
342347 if verbose :
0 commit comments