Skip to content

Commit a53397d

Browse files
committed
fix(cli): inform argument parser that options are mutually exclusive
1 parent d9d260c commit a53397d

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

gitlab/v4/cli.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -258,10 +258,14 @@ def _populate_sub_parser_by_class(
258258
sub_parser_action.add_argument(
259259
f"--{x.replace('_', '-')}", required=True
260260
)
261-
for x in mgr_cls._create_attrs.optional + mgr_cls._create_attrs.exclusive:
261+
for x in mgr_cls._create_attrs.optional:
262262
sub_parser_action.add_argument(
263263
f"--{x.replace('_', '-')}", required=False
264264
)
265+
if mgr_cls._create_attrs.exclusive:
266+
group = sub_parser_action.add_mutually_exclusive_group()
267+
for x in mgr_cls._create_attrs.exclusive:
268+
group.add_argument(f"--{x.replace('_', '-')}")
265269

266270
if action_name == "update":
267271
if cls._id_attr is not None:
@@ -274,12 +278,17 @@ def _populate_sub_parser_by_class(
274278
f"--{x.replace('_', '-')}", required=True
275279
)
276280

277-
for x in mgr_cls._update_attrs.optional + mgr_cls._update_attrs.exclusive:
281+
for x in mgr_cls._update_attrs.optional:
278282
if x != cls._id_attr:
279283
sub_parser_action.add_argument(
280284
f"--{x.replace('_', '-')}", required=False
281285
)
282286

287+
if mgr_cls._create_attrs.exclusive:
288+
group = sub_parser_action.add_mutually_exclusive_group()
289+
for x in mgr_cls._create_attrs.exclusive:
290+
group.add_argument(f"--{x.replace('_', '-')}")
291+
283292
if cls.__name__ in cli.custom_actions:
284293
name = cls.__name__
285294
for action_name in cli.custom_actions[name]:

0 commit comments

Comments
 (0)