Skip to content

Commit b8d48e6

Browse files
authored
Merge pull request Azure#211 from kairu-ms/fix-sub-command-inherit
Fix sub command inherit bugs
2 parents f1265f5 + 9c9c053 commit b8d48e6

1 file changed

Lines changed: 12 additions & 7 deletions

File tree

src/aaz_dev/command/controller/workspace_cfg_editor.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,8 +1011,14 @@ def _generate_sub_commands(cls, schema, subresource_idx, update_cmd, ref_args_op
10111011
assert update_op is not None
10121012

10131013
# find arg
1014-
arg_var = schema.arg
1015-
arg, arg_idx = cls.find_arg_in_command_by_var(update_cmd, arg_var)
1014+
if schema.arg:
1015+
arg_var = schema.arg
1016+
arg, arg_idx = cls.find_arg_in_command_by_var(update_cmd, arg_var)
1017+
if not arg or not arg_idx:
1018+
raise exceptions.InvalidAPIUsage(f"Argument '{arg_var}' not exist in command")
1019+
else:
1020+
# schema is flatten
1021+
arg = None
10161022

10171023
# build ref_args
10181024
ref_args = []
@@ -1030,9 +1036,6 @@ def _generate_sub_commands(cls, schema, subresource_idx, update_cmd, ref_args_op
10301036
a.options = sorted(a.options, key=lambda o: (len(o), o))[-1:] # use the longest argument
10311037
ref_args.append(a)
10321038

1033-
if not arg or not arg_idx:
1034-
raise exceptions.InvalidAPIUsage(f"Argument '{arg_var}' not exist in command")
1035-
10361039
if isinstance(schema, CMDArraySchema):
10371040
assert isinstance(arg, CMDArrayArg)
10381041
# list command
@@ -1096,12 +1099,13 @@ def _generate_sub_commands(cls, schema, subresource_idx, update_cmd, ref_args_op
10961099
return [list_command, create_command, update_command, delete_command, show_command]
10971100

10981101
elif isinstance(schema, CMDObjectSchema):
1099-
assert isinstance(arg, CMDObjectArg)
11001102
if schema.props and schema.additional_props:
11011103
raise NotImplementedError()
11021104

11031105
if schema.props:
1104-
ref_args.extend(arg.args)
1106+
if arg:
1107+
assert isinstance(arg, CMDObjectArg)
1108+
ref_args.extend(arg.args)
11051109

11061110
# create command
11071111
create_command = cls._build_subresource_create_command(
@@ -1133,6 +1137,7 @@ def _generate_sub_commands(cls, schema, subresource_idx, update_cmd, ref_args_op
11331137
)
11341138

11351139
elif schema.additional_props and schema.additional_props.item:
1140+
assert isinstance(arg, CMDObjectArg)
11361141
item_subresource_idx = [*subresource_idx, '{}']
11371142

11381143
item_arg = arg.additional_props.item

0 commit comments

Comments
 (0)