def fill_cmd_examples()

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)