Skip to content

Commit fb3789f

Browse files
authored
Merge pull request Azure#271 from kairu-ms/fix-arg-groups-null
Fix bugs while command has no arguments.
2 parents 36b49f0 + acc4afb commit fb3789f

1 file changed

Lines changed: 57 additions & 47 deletions

File tree

src/aaz_dev/command/controller/cfg_reader.py

Lines changed: 57 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -192,10 +192,12 @@ def find_arg_in_command(cls, command, idx):
192192
idx = cls.arg_idx_to_list(idx)
193193
assert isinstance(idx, list), f"invalid arg_idx type: {type(idx)}"
194194

195-
for arg_group in command.arg_groups:
196-
arg = cls.find_arg_in_group(arg_group, idx)
197-
if arg:
198-
return arg
195+
if command.arg_groups:
196+
for arg_group in command.arg_groups:
197+
arg = cls.find_arg_in_group(arg_group, idx)
198+
if arg:
199+
return arg
200+
199201
return None
200202

201203
def find_arg_parent(self, *cmd_names, idx):
@@ -212,9 +214,10 @@ def find_arg_parent_in_command(cls, command, idx):
212214
assert isinstance(idx, list), f"invalid arg_idx type: {type(idx)}"
213215

214216
if len(idx) == 1:
215-
for arg_group in command.arg_groups:
216-
if cls.find_arg_in_group(arg_group, idx) is not None:
217-
return None, arg_group
217+
if command.arg_groups:
218+
for arg_group in command.arg_groups:
219+
if cls.find_arg_in_group(arg_group, idx) is not None:
220+
return None, arg_group
218221
else:
219222
parent_idx = idx[:-1]
220223
parent_arg = cls.find_arg_in_command(command, idx=parent_idx)
@@ -313,18 +316,20 @@ def arg_filter(_parent, _arg, _arg_idx, _arg_var):
313316
return (_parent, None, None, None), True
314317
return None, False
315318

316-
for arg_group in command.arg_groups:
317-
matches = [match for match in cls._iter_args_in_group(
318-
arg_group, arg_filter=arg_filter
319-
)]
320-
if not matches:
321-
continue
322-
assert len(matches) == 1
323-
324-
parent, arg, arg_idx, arg_var = matches[0]
325-
if arg:
326-
arg_idx = cls.arg_idx_to_str(arg_idx)
327-
return parent, arg, arg_idx
319+
if command.arg_groups:
320+
for arg_group in command.arg_groups:
321+
matches = [match for match in cls._iter_args_in_group(
322+
arg_group, arg_filter=arg_filter
323+
)]
324+
if not matches:
325+
continue
326+
assert len(matches) == 1
327+
328+
parent, arg, arg_idx, arg_var = matches[0]
329+
if arg:
330+
arg_idx = cls.arg_idx_to_str(arg_idx)
331+
return parent, arg, arg_idx
332+
328333
return None, None, None
329334

330335
@classmethod
@@ -393,18 +398,20 @@ def arg_filter(_parent, _arg, _arg_idx, _arg_var):
393398
return (_parent, _arg, _arg_idx, _arg_var), True
394399
return None, False
395400

396-
for arg_group in command.arg_groups:
397-
matches = [match for match in cls._iter_args_in_group(
398-
arg_group, arg_filter=arg_filter
399-
)]
400-
if not matches:
401-
continue
402-
assert len(matches) == 1
403-
404-
parent, arg, arg_idx, arg_var = matches[0]
405-
if arg:
406-
arg_idx = cls.arg_idx_to_str(arg_idx)
407-
return parent, arg, arg_idx, arg_var
401+
if command.arg_groups:
402+
for arg_group in command.arg_groups:
403+
matches = [match for match in cls._iter_args_in_group(
404+
arg_group, arg_filter=arg_filter
405+
)]
406+
if not matches:
407+
continue
408+
assert len(matches) == 1
409+
410+
parent, arg, arg_idx, arg_var = matches[0]
411+
if arg:
412+
arg_idx = cls.arg_idx_to_str(arg_idx)
413+
return parent, arg, arg_idx, arg_var
414+
408415
return None, None, None, None
409416

410417
def iter_arg_cls_definition(self, *cmd_names, cls_name_prefix=None):
@@ -431,11 +438,12 @@ def arg_filter(_parent, _arg, _arg_idx, _arg_var):
431438
return (_parent, _arg, _arg_idx, _arg_var), False
432439
return None, False
433440

434-
for arg_group in command.arg_groups:
435-
for parent, arg, arg_idx, arg_var in cls._iter_args_in_group(arg_group, arg_filter=arg_filter):
436-
if arg:
437-
arg_idx = cls.arg_idx_to_str(arg_idx)
438-
yield parent, arg, arg_idx, arg_var
441+
if command.arg_groups:
442+
for arg_group in command.arg_groups:
443+
for parent, arg, arg_idx, arg_var in cls._iter_args_in_group(arg_group, arg_filter=arg_filter):
444+
if arg:
445+
arg_idx = cls.arg_idx_to_str(arg_idx)
446+
yield parent, arg, arg_idx, arg_var
439447

440448
def iter_arg_cls_reference(self, *cmd_names, cls_name):
441449
command = self.find_command(*cmd_names)
@@ -457,22 +465,24 @@ def arg_filter(_parent, _arg, _arg_idx, _arg_var):
457465
return (_parent, _arg, _arg_idx, _arg_var), False
458466
return None, False
459467

460-
for arg_group in command.arg_groups:
461-
for parent, arg, arg_idx, arg_var in cls._iter_args_in_group(
462-
arg_group, arg_filter=arg_filter):
463-
if arg:
464-
arg_idx = cls.arg_idx_to_str(arg_idx)
465-
yield parent, arg, arg_idx, arg_var
468+
if command.arg_groups:
469+
for arg_group in command.arg_groups:
470+
for parent, arg, arg_idx, arg_var in cls._iter_args_in_group(
471+
arg_group, arg_filter=arg_filter):
472+
if arg:
473+
arg_idx = cls.arg_idx_to_str(arg_idx)
474+
yield parent, arg, arg_idx, arg_var
466475

467476
def iter_args_in_command(self, command):
468477
def arg_filter(_parent, _arg, _arg_idx, _arg_var):
469478
return (_parent, _arg, _arg_idx, _arg_var), False
470479

471-
for arg_group in command.arg_groups:
472-
for parent, arg, arg_idx, arg_var in self._iter_args_in_group(arg_group, arg_filter=arg_filter):
473-
if arg:
474-
arg_idx = self.arg_idx_to_str(arg_idx)
475-
yield parent, arg, arg_idx, arg_var
480+
if command.arg_groups:
481+
for arg_group in command.arg_groups:
482+
for parent, arg, arg_idx, arg_var in self._iter_args_in_group(arg_group, arg_filter=arg_filter):
483+
if arg:
484+
arg_idx = self.arg_idx_to_str(arg_idx)
485+
yield parent, arg, arg_idx, arg_var
476486

477487
# TODO: build arg_idx in command link call
478488
@classmethod

0 commit comments

Comments
 (0)