[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/networktocode/netutils/develop/development_scripts.py [Back]  [Original]

"""Developer script to generate markdown tables."""

from jinja2 import BaseLoader, Environment, select_autoescape

from netutils import lib_mapper
from netutils.config.compliance import parser_map
from netutils.utils import _JINJA2_FUNCTION_MAPPINGS

LIB_MAPPER_TEMPLATE = """| {{ header_src }} | | {{ header_dst }} |
| ---------- | -- | ------ |
{%- for key, val in _dict|dictsort %}
| {{ key }} |  | {{ val|safe }} |
{%- endfor %}
"""

PARSER_MAPPER_TEMPLATE = """| OS Name | Parser Class |
| ---------- | ------ |
{%- for key, val in _dict|dictsort %}
| {{ key }} | netutils.config.parser.{{ val.__name__ }} |
{%- endfor %}
"""

JINJA_MAPPER_TEMPLATE = """| Filter name | Function |
| ---------- | ------ |
{%- for key, val in _dict|dictsort(false, 'value') %}
| {{ key }} | netutils.{{ val }} |
{%- endfor %}
"""

TEMPLATE = {
    "LIB_MAPPER_TEMPLATE": LIB_MAPPER_TEMPLATE,
    "PARSER_MAPPER_TEMPLATE": PARSER_MAPPER_TEMPLATE,
    "JINJA_MAPPER_TEMPLATE": JINJA_MAPPER_TEMPLATE,
}


MAPPER = {
    "LIB_MAPPER_TEMPLATE": {
        "aerleon": {
            "header_src": "AERLEON",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.AERLEON_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/aerleon.md",
        },
        "aerleon_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "AERLEON",
            "_dict": lib_mapper.AERLEON_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/aerleon_reverse.md",
        },
        "ansible": {
            "header_src": "ANSIBLE",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.ANSIBLE_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/ansible.md",
        },
        "ansible_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "ANSIBLE",
            "_dict": lib_mapper.ANSIBLE_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/ansible_reverse.md",
        },
        "capirca": {
            "header_src": "CAPIRCA",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.CAPIRCA_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/capirca.md",
        },
        "capirca_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "CAPIRCA",
            "_dict": lib_mapper.CAPIRCA_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/capirca_reverse.md",
        },
        "dna_center": {
            "header_src": "DNA_CENTER",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.DNA_CENTER_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/dna_center.md",
        },
        "dna_center_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "DNA_CENTER",
            "_dict": lib_mapper.DNA_CENTER_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/dna_center_reverse.md",
        },
        "forwardnetworks": {
            "header_src": "FORWARDNETWORKS",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.FORWARDNETWORKS_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/forwardnetworks.md",
        },
        "forwardnetworks_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "FORWARDNETWORKS",
            "_dict": lib_mapper.FORWARDNETWORKS_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/forwardnetworks_reverse.md",
        },
        "hierconfig": {
            "header_src": "HIERCONFIG",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.HIERCONFIG_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/hierconfig.md",
        },
        "hierconfig_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "HIERCONFIG",
            "_dict": lib_mapper.HIERCONFIG_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/hierconfig_reverse.md",
        },
        "librenms": {
            "header_src": "LIBRENMS",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.LIBRENMS_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/librenms.md",
        },
        "librenms_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "LIBRENMS",
            "_dict": lib_mapper.LIBRENMS_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/librenms_reverse.md",
        },
        "napalm": {
            "header_src": "NAPALM",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.NAPALM_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/napalm.md",
        },
        "napalm_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "NAPALM",
            "_dict": lib_mapper.NAPALM_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/napalm_reverse.md",
        },
        "ncclient": {
            "header_src": "NCCLIENT",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.NCCLIENT_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/ncclient.md",
        },
        "ncclient_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "NCCLIENT",
            "_dict": lib_mapper.NCCLIENT_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/ncclient_reverse.md",
        },
        "netmiko": {
            "header_src": "NETMIKO",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.NETMIKO_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/netmiko.md",
        },
        "netmiko_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "NETMIKO",
            "_dict": lib_mapper.NETMIKO_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/netmiko_reverse.md",
        },
        "netutilsparser": {
            "header_src": "NETUTILSPARSER",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.NETUTILSPARSER_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/netutilsparser.md",
        },
        "netutilsparser_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "NETUTILSPARSER",
            "_dict": lib_mapper.NETUTILSPARSER_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/netutilsparser_reverse.md",
        },
        "nist": {
            "header_src": "NIST",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.NIST_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/nist.md",
        },
        "nist_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "NIST",
            "_dict": lib_mapper.NIST_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/nist_reverse.md",
        },
        "ntctemplates": {
            "header_src": "NTCTEMPLATES",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.NTCTEMPLATES_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/ntctemplates.md",
        },
        "ntctemplates_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "NTCTEMPLATES",
            "_dict": lib_mapper.NTCTEMPLATES_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/ntctemplates_reverse.md",
        },
        "pyats": {
            "header_src": "PYATS",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.PYATS_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/pyats.md",
        },
        "pyats_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "PYATS",
            "_dict": lib_mapper.PYATS_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/pyats_reverse.md",
        },
        "pyntc": {
            "header_src": "PYNTC",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.PYNTC_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/pyntc.md",
        },
        "pyntc_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "PYNTC",
            "_dict": lib_mapper.PYNTC_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/pyntc_reverse.md",
        },
        "running_config_mapper": {
            "header_src": "NORMALIZED",
            "header_dst": "RUNNING_CONFIG_COMMAND",
            "_dict": lib_mapper.RUNNING_CONFIG_MAPPER,
            "_file": "docs/user/lib_mapper/running_config.md",
        },
        "scrapli": {
            "header_src": "SCRAPLI",
            "header_dst": "NORMALIZED",
            "_dict": lib_mapper.SCRAPLI_LIB_MAPPER,
            "_file": "docs/user/lib_mapper/scrapli.md",
        },
        "scrapli_reverse": {
            "header_src": "NORMALIZED",
            "header_dst": "SCRAPLI",
            "_dict": lib_mapper.SCRAPLI_LIB_MAPPER_REVERSE,
            "_file": "docs/user/lib_mapper/scrapli_reverse.md",
        },
    },
    "PARSER_MAPPER_TEMPLATE": {
        "default": {
            "_dict": parser_map,
            "_file": "docs/dev/include_parser_list.md",
        },
    },
    "JINJA_MAPPER_TEMPLATE": {
        "default": {
            "_dict": _JINJA2_FUNCTION_MAPPINGS,
            "_file": "docs/user/include_jinja_list.md",
        },
    },
}


def main(test=False):
    """Generate or test generation of standard files."""
    env = Environment(loader=BaseLoader, autoescape=select_autoescape())

    for template_name, value in MAPPER.items():
        for data in value.values():
            _file = data["_file"]
            output = env.from_string(TEMPLATE[template_name]).render(**data)
            if test:
                with open(_file, encoding="utf8") as file:
                    actual = file.read()
                if output != actual:
                    return False
            else:
                with open(_file, "w", encoding="utf8") as file:
                    file.write(output)
    return True


if __name__ == "__main__":
    main()

Web Proxy Viewer  |  New URL  |  Original Page