onnx-mlir/docs/doc_check/check.py

53 lines
1.7 KiB
Python

# ===-------------------- check.py - Documentation Checker ----------------===//
#
# Copyright 2019-2020 The IBM Research Authors.
#
# =============================================================================
#
# ===----------------------------------------------------------------------===//
import argparse
import os, sys
from itertools import chain
from pathlib import Path
from utils import setup_logger, DocCheckerCtx
logger = setup_logger("doc-check")
# Make common utilities visible by adding them to system paths.
doc_check_base_dir = os.path.dirname(os.path.realpath(__file__))
sys.path.append(doc_check_base_dir)
from doc_parser import try_parse_and_handle_directive
parser = argparse.ArgumentParser()
parser.add_argument(
"root_dir",
help="directory in which to look for documentation to operate on")
parser.add_argument('--exclude_dirs', nargs='+',
help='a set of directories to exclude, with path specified relative to root_dir', default=[])
def main(root_dir, exclude_dirs):
for i, exclude_dir in enumerate(exclude_dirs):
exclude_dirs[i] = os.path.join(root_dir, exclude_dir)
ctx = DocCheckerCtx(root_dir)
for doc_file in chain(Path(root_dir).rglob('*.md'), Path(root_dir).rglob('*.dc')):
# Skip, if doc file is in directories to be excluded.
if any([str(doc_file).startswith(exclude_dir) for exclude_dir in exclude_dirs]):
continue
logger.info("Checking {}...".format(doc_file))
with ctx.open_doc(doc_file) as markdown_file:
while not markdown_file.eof():
try_parse_and_handle_directive(ctx)
if __name__ == "__main__":
args = parser.parse_args()
main(**vars(args))