1 |
Bug: https://bugs.gentoo.org/686074 |
2 |
Signed-off-by: Zac Medico <zmedico@g.o> |
3 |
--- |
4 |
repoman/lib/repoman/argparser.py | 33 ++++++++++++++++++++------------ |
5 |
1 file changed, 21 insertions(+), 12 deletions(-) |
6 |
|
7 |
diff --git a/repoman/lib/repoman/argparser.py b/repoman/lib/repoman/argparser.py |
8 |
index b87df95cd..fa0e6ff90 100644 |
9 |
--- a/repoman/lib/repoman/argparser.py |
10 |
+++ b/repoman/lib/repoman/argparser.py |
11 |
@@ -1,5 +1,5 @@ |
12 |
# repoman: Argument parser |
13 |
-# Copyright 2007-2017 Gentoo Foundation |
14 |
+# Copyright 2007-2019 Gentoo Authors |
15 |
# Distributed under the terms of the GNU General Public License v2 |
16 |
|
17 |
"""This module contains functions used in Repoman to parse CLI arguments.""" |
18 |
@@ -196,23 +196,32 @@ def parse_args(argv, repoman_default_opts): |
19 |
'--mode', dest='mode', choices=mode_keys, |
20 |
help='specify which mode repoman will run in (default=full)') |
21 |
|
22 |
- opts, args = parser.parse_known_args(argv[1:]) |
23 |
+ # Modes help is included earlier, in the parser description. |
24 |
+ parser.add_argument( |
25 |
+ 'mode_positional', nargs='?', metavar='mode', choices=mode_keys, |
26 |
+ help=argparse.SUPPRESS) |
27 |
+ |
28 |
+ opts = parser.parse_args(argv[1:]) |
29 |
|
30 |
if not opts.ignore_default_opts: |
31 |
default_opts = util.shlex_split(repoman_default_opts) |
32 |
if default_opts: |
33 |
- opts, args = parser.parse_known_args(default_opts + sys.argv[1:]) |
34 |
+ opts = parser.parse_args(default_opts + sys.argv[1:]) |
35 |
+ |
36 |
+ args = [] |
37 |
+ if opts.mode is not None: |
38 |
+ args.append(opts.mode) |
39 |
+ if opts.mode_positional is not None: |
40 |
+ args.append(opts.mode_positional) |
41 |
+ |
42 |
+ if len(set(args)) > 1: |
43 |
+ parser.error("multiple modes specified: %s" % " ".join(args)) |
44 |
+ |
45 |
+ opts.mode = args[0] if args else None |
46 |
|
47 |
if opts.mode == 'help': |
48 |
- parser.print_help(short=False) |
49 |
- |
50 |
- for arg in args: |
51 |
- if arg in modes: |
52 |
- if not opts.mode: |
53 |
- opts.mode = arg |
54 |
- break |
55 |
- else: |
56 |
- parser.error("invalid mode: %s" % arg) |
57 |
+ parser.print_help() |
58 |
+ parser.exit() |
59 |
|
60 |
if not opts.mode: |
61 |
opts.mode = 'full' |
62 |
-- |
63 |
2.21.0 |