@@ -263,16 +263,6 @@ def run_and_combine_outputs(command, *args):
263
263
return subprocess .check_output (command_string , stderr = subprocess .STDOUT )
264
264
265
265
266
- def find_endpoint (argv , shortcuts = {}):
267
- # endpoint is first positional argument
268
- pattern = re .compile (".*https?://.*" )
269
- indices = []
270
- for index , arg in enumerate (argv ):
271
- if arg in shortcuts or (Endpoint .is_endpoint (arg ) and not pattern .match (arg )):
272
- indices .append (index )
273
- return - 1 if len (indices ) == 0 else indices [- 1 ]
274
-
275
-
276
266
_default_log_levels = (
277
267
"NOTSET" ,
278
268
"DEBUG" ,
@@ -308,6 +298,7 @@ def jgo_parser(log_levels=_default_log_levels):
308
298
"""
309
299
310
300
parser = argparse .ArgumentParser (
301
+ prog = "jgo" ,
311
302
description = "Run Java main class from Maven coordinates." ,
312
303
usage = usage [len ("usage: " ) :],
313
304
epilog = epilog ,
@@ -376,6 +367,18 @@ def jgo_parser(log_levels=_default_log_levels):
376
367
parser .add_argument (
377
368
"--log-level" , default = None , type = str , help = "Set log level" , choices = log_levels
378
369
)
370
+ parser .add_argument (
371
+ "endpoint" ,
372
+ help = "Endpoint" ,
373
+ metavar = "<endpoint>" ,
374
+ )
375
+ parser .add_argument (
376
+ "program_args" ,
377
+ help = "Program arguments" ,
378
+ metavar = "main-args" ,
379
+ nargs = "*" ,
380
+ default = [],
381
+ )
379
382
380
383
return parser
381
384
@@ -398,7 +401,6 @@ def _jgo_main(argv=sys.argv[1:], stdout=None, stderr=None):
398
401
completed_process .check_returncode ()
399
402
400
403
except HelpRequested :
401
- pass
402
404
parser .print_help ()
403
405
404
406
except NoEndpointProvided :
@@ -717,15 +719,18 @@ def run(parser, argv=sys.argv[1:], stdout=None, stderr=None):
717
719
repositories = config ["repositories" ]
718
720
shortcuts = config ["shortcuts" ]
719
721
720
- endpoint_index = find_endpoint (argv , shortcuts )
721
- if endpoint_index == - 1 :
722
- raise HelpRequested (
723
- argv
724
- ) if "-h" in argv or "--help" in argv else NoEndpointProvided (argv )
722
+ if "-h" in argv or "--help" in argv :
723
+ raise HelpRequested (argv )
724
+
725
+ args , unknown = parser .parse_known_args (argv )
726
+
727
+ if not args .endpoint :
728
+ raise NoEndpointProvided (argv )
729
+ if args .endpoint in shortcuts and not Endpoint .is_endpoint (args .endpoint ):
730
+ raise NoEndpointProvided (argv )
725
731
726
- args , unknown = parser .parse_known_args (argv [:endpoint_index ])
727
732
jvm_args = unknown if unknown else []
728
- program_args = [] if endpoint_index == - 1 else argv [ endpoint_index + 1 :]
733
+ program_args = args . program_args
729
734
if args .log_level :
730
735
logging .getLogger ().setLevel (logging .getLevelName (args .log_level ))
731
736
@@ -755,7 +760,7 @@ def run(parser, argv=sys.argv[1:], stdout=None, stderr=None):
755
760
if args .force_update :
756
761
args .update_cache = True
757
762
758
- endpoint_string = "+" .join ([argv [ endpoint_index ] ] + args .additional_endpoints )
763
+ endpoint_string = "+" .join ([args . endpoint ] + args .additional_endpoints )
759
764
760
765
primary_endpoint , workspace = resolve_dependencies (
761
766
endpoint_string ,
0 commit comments