in src/aaz_dev/cli/controller/portal_cli_generator.py [0:0]
def fill_cmd_examples(self, cmd_info, cmd_cfg, leaf, target_version):
var_option_list = []
var_required = set()
sub_id_required = False
for arg_group in cmd_cfg.arg_groups:
for arg in arg_group.args:
assert arg.options is not None
if len(arg.options) == 0: continue
is_required = arg.required
var_name = arg.var
if arg.required and var_name.find("subscriptionId") == -1:
# for user input cmd example, ignore subscriptionId
var_required.add(var_name)
if arg.required and var_name == "$Path.subscriptionId":
sub_id_required = True
if cmd_info['path'].find("/resourceGroups/{") != -1 and var_name == "$Path.resourceGroupName":
var_required.add(var_name)
is_required = True
var_option_list.append((var_name, arg.options,
is_required,
var_name.find('$Path') != -1))
if not target_version.examples:
self.generate_default_example(cmd_info, leaf, var_option_list)
return
find_example = False
for example in target_version.examples:
if find_example: break
assert example.name is not None
assert example.commands is not None
for command_str in example.commands:
if find_example: break
param_verify = True
para_list = []
para_groups = re.finditer(self.PARA_REG_PATTERN, command_str)
if not para_groups:
continue
cmd_para = set()
# 1. check if all parameters in example command str is in path, if not ignore
for para_match in para_groups:
para_name = para_match.group(1)
var, raw_options, is_required, is_in_path = self.find_para_var(para_name, var_option_list)
# var not found, drop this command_str
if not var or not is_in_path:
param_verify = False
break
pick_options = list(filter(lambda opt: len(opt) > 1, raw_options))
para_list.append((var, pick_options[0]))
cmd_para.add(var)
# 2. check if all required parameters is in example command str
# if not, drop this example command str
if not var_required.issubset(cmd_para):
param_verify = False
if not param_verify: continue
parameters = []
sub_id_added = False
for (var, pick_option) in para_list:
if var == "$Path.subscriptionId":
sub_id_added = True
parameters.append({
'name': "--" + pick_option,
'value': "[" + var.replace("$Path", "path") + "]"
})
if not sub_id_added and sub_id_required:
parameters.append({
'name': "--subscription",
'value': "[path.subscriptionId]"
})
cmd_info['examples'] = [{
'description': example.name,
'parameters': parameters
}]
find_example = True
if not find_example:
self.generate_default_example(cmd_info, leaf, var_option_list)