diff options
Diffstat (limited to 'docs/_ext')
-rw-r--r-- | docs/_ext/testcoverage.py | 3 | ||||
-rw-r--r-- | docs/_ext/vyos.py | 95 |
2 files changed, 62 insertions, 36 deletions
diff --git a/docs/_ext/testcoverage.py b/docs/_ext/testcoverage.py index 90d9a93e..3d1461a9 100644 --- a/docs/_ext/testcoverage.py +++ b/docs/_ext/testcoverage.py @@ -337,7 +337,8 @@ def get_working_commands(): } for kind in config_tree_new: for e in config_tree_new[kind]: - result[kind].extend(create_commands(config_tree_new[kind][e])) + if config_tree_new[kind][e]['name']: + result[kind].extend(create_commands(config_tree_new[kind][e])) for cmd in result['cfgcmd']: cmd['cmd'] = " ".join(cmd['name']) diff --git a/docs/_ext/vyos.py b/docs/_ext/vyos.py index 0a198821..fbdfefab 100644 --- a/docs/_ext/vyos.py +++ b/docs/_ext/vyos.py @@ -437,20 +437,45 @@ class CfgCmdDirective(CmdDirective): def strip_cmd(cmd, debug=False): + + # find all [...] and also nested [...] + # regex and str.find() had problems with nested [...] + appearance = 0 + cmd_new = "" + for c in cmd: + if c == "[": + appearance = appearance + 1 + if appearance == 0: + cmd_new = f"{cmd_new}{c}" + if c == "]": + appearance = appearance - 1 + + # only if all [..] will be delete if appearance > 0 there is a syntax errror + if appearance == 0: + cmd = cmd_new + + # same for <...> + appearance = 0 + cmd_new = "" + for c in cmd: + if c == "<": + appearance = appearance + 1 + if appearance == 0: + cmd_new = f"{cmd_new}{c}" + if c == ">": + appearance = appearance - 1 + + # only if all <..> will be delete if appearance > 0 there is a syntax errror + if appearance == 0: + cmd = cmd_new + if debug: print("") print(cmd) - cmd = re.sub('set','',cmd) - if debug: - print(cmd) - #while " | " in cmd: - cmd = re.sub('\s+\|\s+','',cmd) - if debug: - print(cmd) - cmd = re.sub('<\S*>','',cmd) + cmd = re.sub('^set','',cmd) if debug: print(cmd) - cmd = re.sub('\[\S\]','',cmd) + cmd = cmd.replace('|','') if debug: print(cmd) cmd = re.sub('\s+','',cmd) @@ -472,10 +497,10 @@ def build_row(app, fromdocname, rowdata): entry += nodes.paragraph(text=item) elif isinstance(cell, bool): if cell: - entry += nodes.paragraph(text="") + entry += nodes.paragraph(text="✔") entry['classes'] = ['coverage-ok'] else: - entry += nodes.paragraph(text="") + entry += nodes.paragraph(text="✕") entry['classes'] = ['coverage-fail'] else: entry += nodes.paragraph(text=cell) @@ -485,8 +510,7 @@ def build_row(app, fromdocname, rowdata): def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type): coverage_list = {} - int_docs = 0 - int_xml = 0 + strip_true_list = [] for cmd in doccmd: coverage_item = { 'doccmd': None, @@ -500,13 +524,9 @@ def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type): coverage_item['doccmd'] = cmd['cmd'] coverage_item['doccmd_item'] = cmd coverage_item['indocs'] = True - int_docs += 1 coverage_list[strip_cmd(cmd['cmd'])] = dict(coverage_item) - - #print(coverage_list.keys()) - for cmd in xmlcmd: strip = strip_cmd(cmd['cmd']) @@ -524,15 +544,16 @@ def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type): coverage_item['xmlcmd_item'] = cmd coverage_item['inxml'] = True coverage_item['xmlfilename'] = cmd['filename'] - int_xml += 1 coverage_list[strip] = dict(coverage_item) else: coverage_list[strip]['xmlcmd'] = cmd['cmd'] coverage_list[strip]['xmlcmd_item'] = cmd coverage_list[strip]['inxml'] = True coverage_list[strip]['xmlfilename'] = cmd['filename'] - int_xml += 1 + strip_true_list.append(strip) + + strip_true_list = list(set(strip_true_list)) @@ -540,8 +561,8 @@ def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type): tgroup = nodes.tgroup(cols=3) table += tgroup - header = (f'{int_docs}/{len(coverage_list)} in Docs', f'{int_xml}/{len(coverage_list)} in XML', 'Command') - colwidths = (1, 1, 8) + header = (f'Status {len(strip_true_list)}/{len(coverage_list)}', 'Documentaion', 'XML') + colwidths = (5, 50 , 50) table = nodes.table() tgroup = nodes.tgroup(cols=len(header)) table += tgroup @@ -553,28 +574,34 @@ def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type): tbody = nodes.tbody() tgroup += tbody for entry in sorted(coverage_list): - body_text_list = [] + doc_cmd_text = [] + doc_xml_text = [] if coverage_list[entry]['indocs']: - body_text_list.append(coverage_list[entry]['doccmd_item']) + doc_cmd_text.append(coverage_list[entry]['doccmd_item']) else: - body_text_list.append('Not documented yet') + doc_cmd_text.append('not yet documented') if coverage_list[entry]['inxml']: - body_text_list.append("------------------") - body_text_list.append(str(coverage_list[entry]['xmlfilename']) + ":") - body_text_list.append(coverage_list[entry]['xmlcmd']) + doc_xml_text.append(str(coverage_list[entry]['xmlfilename']) + ":") + doc_xml_text.append(coverage_list[entry]['xmlcmd']) else: - body_text_list.append('Nothing found in XML Definitions') + doc_xml_text.append('Nothing found in XML Definitions') - + if not coverage_list[entry]['indocs'] or not coverage_list[entry]['inxml']: + status = False + else: + status = True + tbody += build_row(app, fromdocname, ( - coverage_list[entry]['indocs'], - coverage_list[entry]['inxml'], - body_text_list + status, + doc_cmd_text, + doc_xml_text + ) ) + table['ids'] = [f'table-{cli_type}'] return table def process_cmd_node(app, cmd, fromdocname, cli_type): @@ -655,7 +682,7 @@ def handle_document_meta_data(app, document): try: lastproofread_time = datetime.strptime(lastproofread, '%Y-%m-%d') delta = datetime.now() - lastproofread_time - if delta.days > 180: + if delta.days > 365: logger.warning(f'{delta.days} days since last proofread {app.env.doc2path(docname)}') except Exception as e: @@ -663,5 +690,3 @@ def handle_document_meta_data(app, document): else: pass #logger.warning(f'lastproofread meta data missing in {app.env.doc2path(docname)}') - - |