mirror of
https://github.com/vyos/vyos-documentation.git
synced 2025-10-26 01:31:44 +02:00
improve coverage with all real vyos commands exported from iso
This commit is contained in:
parent
336b4498b8
commit
68a335a086
@ -1,14 +1,13 @@
|
||||
'''
|
||||
generate json with all commands from xml for vyos documentation coverage
|
||||
|
||||
'''
|
||||
|
||||
|
||||
import sys
|
||||
import os
|
||||
import json
|
||||
import re
|
||||
import logging
|
||||
import datetime
|
||||
|
||||
from io import BytesIO
|
||||
from lxml import etree as ET
|
||||
@ -33,11 +32,32 @@ input_data = [
|
||||
}
|
||||
]
|
||||
|
||||
vyos_commands_dir = "_include/coverage"
|
||||
|
||||
node_data = {
|
||||
'cfgcmd': {},
|
||||
'opcmd': {},
|
||||
}
|
||||
|
||||
|
||||
def get_vyos_commands():
|
||||
return_data = None
|
||||
for (dirpath, dirnames, filenames) in os.walk(vyos_commands_dir):
|
||||
for file in filenames:
|
||||
with open(f"{vyos_commands_dir}/{file}") as f:
|
||||
data = json.load(f)
|
||||
|
||||
if not return_data:
|
||||
return_data = data
|
||||
|
||||
# find latestes export
|
||||
if datetime.datetime.fromisoformat(return_data['date']) < datetime.datetime.fromisoformat(data['date']):
|
||||
return_data = data
|
||||
|
||||
return return_data
|
||||
|
||||
|
||||
|
||||
def get_properties(p):
|
||||
props = {}
|
||||
props['valueless'] = False
|
||||
@ -378,6 +398,4 @@ def override_element(l: list):
|
||||
el.getparent().remove(el)
|
||||
|
||||
if __name__ == "__main__":
|
||||
res = get_working_commands()
|
||||
print(json.dumps(res))
|
||||
#print(res['cfgcmd'][0])
|
||||
get_vyos_commands()
|
||||
|
||||
@ -8,7 +8,7 @@ from docutils.parsers.rst import Directive, directives, states
|
||||
|
||||
from sphinx.util.docutils import SphinxDirective
|
||||
|
||||
from testcoverage import get_working_commands
|
||||
from testcoverage import get_working_commands, get_vyos_commands
|
||||
|
||||
from sphinx.util import logging
|
||||
|
||||
@ -28,6 +28,11 @@ def setup(app):
|
||||
#{"cfgcmd": [], "opcmd": []},
|
||||
'html'
|
||||
)
|
||||
app.add_config_value(
|
||||
'vyos_commands',
|
||||
get_vyos_commands(),
|
||||
'html'
|
||||
)
|
||||
app.add_config_value(
|
||||
'vyos_coverage',
|
||||
{
|
||||
@ -550,17 +555,20 @@ def build_row(app, fromdocname, rowdata):
|
||||
|
||||
|
||||
|
||||
def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type):
|
||||
def process_coverage(app, fromdocname, doccmd, xmlcmd, vyoscmd, cli_type):
|
||||
coverage_list = {}
|
||||
strip_true_list = []
|
||||
for cmd in doccmd:
|
||||
coverage_item = {
|
||||
'doccmd': None,
|
||||
'xmlcmd': None,
|
||||
'vyoscmd': None,
|
||||
'doccmd_item': None,
|
||||
'xmlcmd_item': None,
|
||||
'vyoscmd_item': None,
|
||||
'indocs': False,
|
||||
'inxml': False,
|
||||
'invyos': False,
|
||||
'xmlfilename': None
|
||||
}
|
||||
coverage_item['doccmd'] = cmd['cmd']
|
||||
@ -576,10 +584,13 @@ def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type):
|
||||
coverage_item = {
|
||||
'doccmd': None,
|
||||
'xmlcmd': None,
|
||||
'vyoscmd': None,
|
||||
'doccmd_item': None,
|
||||
'xmlcmd_item': None,
|
||||
'vyoscmd_item': None,
|
||||
'indocs': False,
|
||||
'inxml': False,
|
||||
'invyos': False,
|
||||
'xmlfilename': None
|
||||
}
|
||||
coverage_item['xmlcmd'] = cmd['cmd']
|
||||
@ -592,7 +603,33 @@ def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type):
|
||||
coverage_list[strip]['xmlcmd_item'] = cmd
|
||||
coverage_list[strip]['inxml'] = True
|
||||
coverage_list[strip]['xmlfilename'] = cmd['filename']
|
||||
strip_true_list.append(strip)
|
||||
|
||||
|
||||
for item in vyoscmd[cli_type]:
|
||||
cmd = ' '.join(item['cmd'])
|
||||
strip = strip_cmd(cmd)
|
||||
if strip not in coverage_list.keys():
|
||||
coverage_item = {
|
||||
'doccmd': None,
|
||||
'xmlcmd': None,
|
||||
'vyoscmd': None,
|
||||
'doccmd_item': None,
|
||||
'xmlcmd_item': None,
|
||||
'vyoscmd_item': None,
|
||||
'indocs': False,
|
||||
'inxml': False,
|
||||
'invyos': False,
|
||||
'xmlfilename': None
|
||||
}
|
||||
coverage_item['vyoscmd'] = cmd
|
||||
coverage_item['invyos'] = True
|
||||
coverage_list[strip] = dict(coverage_item)
|
||||
else:
|
||||
coverage_list[strip]['vyoscmd'] = cmd
|
||||
coverage_list[strip]['invyos'] = True
|
||||
if coverage_list[strip]['indocs'] and coverage_list[strip]['inxml']:
|
||||
strip_true_list.append(strip)
|
||||
|
||||
|
||||
|
||||
strip_true_list = list(set(strip_true_list))
|
||||
@ -605,11 +642,11 @@ def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type):
|
||||
|
||||
|
||||
table = nodes.table()
|
||||
tgroup = nodes.tgroup(cols=3)
|
||||
tgroup = nodes.tgroup(cols=4)
|
||||
table += tgroup
|
||||
|
||||
header = (f'Status {len(strip_true_list)}/{len(coverage_list)}', 'Documentaion', 'XML')
|
||||
colwidths = (5, 50 , 50)
|
||||
header = (f'Status {len(strip_true_list)}/{len(coverage_list)}', 'Documentation', 'XML', f'in VyOS {vyoscmd["os"]}')
|
||||
colwidths = (5, 33 , 33, 33)
|
||||
table = nodes.table()
|
||||
tgroup = nodes.tgroup(cols=len(header))
|
||||
table += tgroup
|
||||
@ -623,6 +660,7 @@ def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type):
|
||||
for entry in sorted(coverage_list):
|
||||
doc_cmd_text = []
|
||||
doc_xml_text = []
|
||||
doc_vyos_text = []
|
||||
if coverage_list[entry]['indocs']:
|
||||
doc_cmd_text.append(coverage_list[entry]['doccmd_item'])
|
||||
else:
|
||||
@ -633,8 +671,14 @@ def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type):
|
||||
doc_xml_text.append(coverage_list[entry]['xmlcmd'])
|
||||
else:
|
||||
doc_xml_text.append('Nothing found in XML Definitions')
|
||||
|
||||
if coverage_list[entry]['invyos']:
|
||||
doc_vyos_text.append(coverage_list[entry]['vyoscmd'])
|
||||
else:
|
||||
doc_vyos_text.append('Nothing found in VyOS')
|
||||
|
||||
if not coverage_list[entry]['indocs'] or not coverage_list[entry]['inxml']:
|
||||
|
||||
if not coverage_list[entry]['indocs'] or not coverage_list[entry]['inxml'] or not coverage_list[entry]['invyos']:
|
||||
status = False
|
||||
else:
|
||||
status = True
|
||||
@ -643,7 +687,8 @@ def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type):
|
||||
(
|
||||
status,
|
||||
doc_cmd_text,
|
||||
doc_xml_text
|
||||
doc_xml_text,
|
||||
doc_vyos_text
|
||||
|
||||
)
|
||||
)
|
||||
@ -678,6 +723,7 @@ def process_cmd_nodes(app, doctree, fromdocname):
|
||||
fromdocname,
|
||||
env.vyos_cfgcmd,
|
||||
app.config.vyos_working_commands['cfgcmd'],
|
||||
app.config.vyos_commands,
|
||||
'cfgcmd'
|
||||
)
|
||||
)
|
||||
@ -695,6 +741,7 @@ def process_cmd_nodes(app, doctree, fromdocname):
|
||||
fromdocname,
|
||||
env.vyos_opcmd,
|
||||
app.config.vyos_working_commands['opcmd'],
|
||||
app.config.vyos_commands,
|
||||
'opcmd'
|
||||
)
|
||||
)
|
||||
|
||||
120049
docs/_include/coverage/20220531-1.4-rolling-202205310217.json
Normal file
120049
docs/_include/coverage/20220531-1.4-rolling-202205310217.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -6,21 +6,23 @@ Overview over all commands, which are documented in the
|
||||
``.. cfgcmd::`` or ``.. opcmd::`` Directives.
|
||||
|
||||
The build process take all xml definition files
|
||||
from `vyos-1x <https://github.com/vyos/vyos-1x>`_ and extract each leaf
|
||||
command or executable command. After this the commands are compare and shown in
|
||||
from `vyos-1x <https://github.com/vyos/vyos-1x>`_ and a periodical export of
|
||||
all VyOS commands and extract each leaf command or executable command.
|
||||
After this the commands are compare and shown in
|
||||
the following two tables. The script compare only the fixed part of a command.
|
||||
All varables or values will be erase and then compare:
|
||||
|
||||
for example there are these two commands:
|
||||
|
||||
* documentation: ``interfaces ethernet <interface> address
|
||||
<address | dhcp | dhcpv6>```
|
||||
* xml: ``interface ethernet <ethernet> address <address>``
|
||||
<address | dhcp | dhcpv6>``
|
||||
* xml: ``interfaces ethernet <ethernet> address <address>``
|
||||
* VyOS: ``interfaces ethernet <text> address <value>``
|
||||
|
||||
Now the script earse all in between ``<`` and ``>`` and simply compare
|
||||
the strings.
|
||||
|
||||
**There are 2 kind of problems:**
|
||||
**There are 3 kind of problems:**
|
||||
|
||||
``Not documented yet``
|
||||
|
||||
@ -30,9 +32,14 @@ the strings.
|
||||
``Nothing found in XML Definitions``
|
||||
|
||||
* ``.. cfgcmd::`` or ``.. opcmd::`` Command are not found in a XML command
|
||||
* Maybe the command where changed in the XML Definition, or the feature is
|
||||
not anymore in VyOS
|
||||
* Some commands are not yet translated to XML
|
||||
* Maybe the command where changed in the XML Definition, the feature is
|
||||
not anymore in VyOS, or there is a typo
|
||||
|
||||
``Nothing found in VyOS``
|
||||
|
||||
* ``.. cfgcmd::`` or ``.. opcmd::`` Command are not found in a VyOS command
|
||||
* Maybe the command where changed, the feature is
|
||||
not anymore in VyOS, or there is a typo
|
||||
|
||||
|
||||
Configuration Commands
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user