summaryrefslogtreecommitdiff
path: root/docs/_ext
diff options
context:
space:
mode:
Diffstat (limited to 'docs/_ext')
-rw-r--r--docs/_ext/testcoverage.py3
-rw-r--r--docs/_ext/vyos.py95
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)}')
-
-