Files
openvino/docs/scripts/create_mapping.py
Ilya Churaev 0c9abf43a9 Updated copyright headers (#15124)
* Updated copyright headers

* Revert "Fixed linker warnings in docs snippets on Windows (#15119)"

This reverts commit 372699ec49.
2023-01-16 11:02:17 +04:00

91 lines
3.1 KiB
Python

# Copyright (C) 2018-2023 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
import argparse
import json
import logging
from lxml import etree
from pathlib import Path
REPOSITORIES = [
'openvino',
'omz',
'pot'
'ovms',
'ote'
]
def create_mapping(xml_input: Path, output_dir: Path, strip_path: Path):
"""
Create a mapping between doxygen label and file path for edit on github button.
"""
xml_input = xml_input.resolve()
output_dir = output_dir.resolve()
strip_path = strip_path.resolve()
mapping = {
'get_started': 'openvino/docs/get_started.md',
'ovsa_get_started': 'openvino/docs/ovsa/ovsa_get_started.md',
'documentation': 'openvino/docs/documentation.md',
'index': 'openvino/docs/index.rst',
'model_zoo': 'openvino/docs/model_zoo.md',
'resources': 'openvino/docs/resources.md',
'tutorials': 'openvino/docs/tutorials.md',
'tuning_utilities': 'openvino/docs/tuning_utilities.md'
}
output_dir.mkdir(parents=True, exist_ok=True)
xml_files = xml_input.glob('*.xml')
for xml_file in xml_files:
try:
root = etree.parse(xml_file.as_posix()).getroot()
compounds = root.xpath('//compounddef')
for compound in compounds:
kind = compound.attrib['kind']
if kind in ['file', 'dir']:
continue
name_tag = compound.find('compoundname')
name = name_tag.text
name = name.replace('::', '_1_1')
if kind == 'page':
exclude = True
for rep in REPOSITORIES:
if name.startswith(rep):
exclude = False
if exclude:
continue
else:
name = kind + name
location_tag = compound.find('location')
file = Path(location_tag.attrib['file'])
if not file.suffix:
continue
try:
file = file.relative_to(strip_path)
except ValueError:
logging.warning('{}: {} is not relative to {}.'.format(xml_file, file, strip_path))
mapping[name] = file.as_posix()
except AttributeError:
logging.warning('{}: Cannot find the origin file.'.format(xml_file))
except etree.XMLSyntaxError as e:
logging.warning('{}: {}.'.format(xml_file, e))
with open(output_dir.joinpath('mapping.json'), 'w') as f:
json.dump(mapping, f)
def main():
logging.basicConfig()
parser = argparse.ArgumentParser()
parser.add_argument('xml_input', type=Path, help='Path to the folder containing doxygen xml files')
parser.add_argument('output_dir', type=Path, help='Path to the output folder')
parser.add_argument('strip_path', type=Path, help='Strip from path')
args = parser.parse_args()
xml_input = args.xml_input
output_dir = args.output_dir
strip_path = args.strip_path
create_mapping(xml_input, output_dir, strip_path)
if __name__ == '__main__':
main()