@@ -189,7 +189,8 @@ def launch_java(
189
189
* app_args ,
190
190
additional_jars = [],
191
191
stdout = None ,
192
- stderr = None
192
+ stderr = None ,
193
+ ** subprocess_run_kwargs ,
193
194
):
194
195
java = executable_path ('java' )
195
196
if not java :
@@ -198,7 +199,7 @@ def launch_java(
198
199
cp = classpath_separator ().join ([os .path .join (jar_dir , '*' )] + additional_jars )
199
200
_logger .debug ("class path: %s" , cp )
200
201
jvm_args = tuple (arg for arg in jvm_args ) if jvm_args else tuple ()
201
- return subprocess .run ((java , '-cp' , cp ) + jvm_args + (main_class ,) + app_args , stdout = stdout , stderr = stderr )
202
+ return subprocess .run ((java , '-cp' , cp ) + jvm_args + (main_class ,) + app_args , stdout = stdout , stderr = stderr , ** subprocess_run_kwargs )
202
203
203
204
def run_and_combine_outputs (command , * args ):
204
205
return subprocess .check_output ((command ,) + args , stderr = subprocess .STDOUT )
@@ -213,7 +214,7 @@ def find_endpoint(argv, shortcuts={}):
213
214
indices .append (index )
214
215
return - 1 if len (indices ) == 0 else indices [- 1 ]
215
216
216
- def jgo_main ( argv = sys . argv [ 1 :], stdout = None , stderr = None ):
217
+ def jgo_parser ( ):
217
218
218
219
epilog = '''
219
220
The endpoint should have one of the following formats:
@@ -246,18 +247,25 @@ def jgo_main(argv=sys.argv[1:], stdout=None, stderr=None):
246
247
parser .add_argument ('--ignore-jgorc' , action = 'store_true' , help = 'Ignore ~/.jgorc' )
247
248
parser .add_argument ('--link-type' , default = None , type = str , help = 'How to link from local maven repository into jgo cache. Defaults to the `links\' setting in ~/.jrunrc or \' auto\' if not specified.' , choices = ('hard' , 'soft' , 'copy' , 'auto' ))
248
249
250
+ return parser
251
+
252
+ def jgo_main (argv = sys .argv [1 :], stdout = None , stderr = None ):
253
+
254
+ parser = jgo_parser ()
249
255
250
256
try :
251
- return run (parser , argv = argv , stdout = stdout , stderr = stderr )
257
+ completed_process = run (parser , argv = argv , stdout = stdout , stderr = stderr )
258
+ completed_process .check_returncode ()
252
259
except subprocess .CalledProcessError as e :
253
- _logger .error ("Error in %s: %s" , e .cmd , e )
260
+ _logger .error ("Error in `%s': %d" , ' ' .join (e .cmd ), e .returncode )
261
+ _logger .debug ("Exception: %s" , e )
254
262
_logger .debug ("Debug Trace:" , exc_info = True )
255
263
if e .stdout :
256
- _logger .debug ("\t Maven std out:" )
264
+ _logger .debug ("\t std out:" )
257
265
for l in str (e .stdout ).split ('\\ n' ):
258
266
_logger .debug ('\t \t %s' , l )
259
267
if e .stderr :
260
- _logger .debug ("Maven std err:" )
268
+ _logger .debug ("\t std err:" )
261
269
for l in str (e .stderr ).split ('\\ n' ):
262
270
_logger .debug ('\t \t %s' , l )
263
271
parser .print_help (file = sys .stderr )
@@ -547,7 +555,7 @@ def run(parser, argv=sys.argv[1:], stdout=None, stderr=None):
547
555
try :
548
556
with open (main_class_file , 'r' ) as f :
549
557
main_class = f .readline ()
550
- return launch_java (workspace , jvm_args , main_class , * program_args , additional_jars = args .additional_jars , stdout = stdout , stderr = stderr )
558
+ return launch_java (workspace , jvm_args , main_class , * program_args , additional_jars = args .additional_jars , stdout = stdout , stderr = stderr , check = False )
551
559
except FileNotFoundError :
552
560
pass
553
561
@@ -573,8 +581,7 @@ def run(parser, argv=sys.argv[1:], stdout=None, stderr=None):
573
581
with open (main_class_file , 'w' ) as f :
574
582
f .write (main_class )
575
583
576
-
577
- return launch_java (workspace , jvm_args , main_class , * program_args , additional_jars = args .additional_jars , stdout = stdout , stderr = stderr )
584
+ return launch_java (workspace , jvm_args , main_class , * program_args , additional_jars = args .additional_jars , stdout = stdout , stderr = stderr , check = False )
578
585
579
586
580
587
0 commit comments