@@ -293,24 +293,28 @@ def generate_option_group(parser: optparse.OptionParser, prefix: str = "") -> op
293293def init_from_options (options : Any , client : Optional [str ] = None ) -> "Client" :
294294 if getattr (options , "provision" , False ):
295295 requirements_path = os .path .abspath (os .path .join (sys .path [0 ], "requirements.txt" ))
296- try :
297- import pip
298- except ImportError :
299- traceback .print_exc ()
300- print (
301- "Module `pip` is not installed. To install `pip`, follow the instructions here: "
302- "https://pip.pypa.io/en/stable/installing/"
303- )
304- sys .exit (1 )
305- if not pip .main (["install" , "--upgrade" , "--requirement" , requirements_path ]):
306- print (
307- "{color_green}You successfully provisioned the dependencies for {script}.{end_color}" .format (
308- color_green = "\033 [92m" ,
309- end_color = "\033 [0m" ,
310- script = os .path .splitext (os .path .basename (sys .argv [0 ]))[0 ],
311- )
296+ current_python_executable = os .path .abspath (sys .executable )
297+ provisioning_exit_code = subprocess .call ([
298+ current_python_executable ,
299+ "-m" ,
300+ "pip" ,
301+ "install" ,
302+ "--upgrade" ,
303+ "--requirement" ,
304+ requirements_path
305+ ])
306+ provisioning_succeeded = provisioning_exit_code == 0
307+ color_green = "\033 [92m"
308+ color_red = "\033 [91m"
309+ print (
310+ "{text_color}Dependency provisioning {status_text} for {script}.{end_color}" .format (
311+ text_color = color_green if provisioning_succeeded else color_red ,
312+ end_color = "\033 [0m" ,
313+ script = os .path .splitext (os .path .basename (sys .argv [0 ]))[0 ],
314+ status_text = "succeeded" if provisioning_succeeded else "failed"
312315 )
313- sys .exit (0 )
316+ )
317+ sys .exit (provisioning_exit_code )
314318
315319 if options .zulip_client is not None :
316320 client = options .zulip_client
0 commit comments