mmdeploy/.github/scripts/check_index_rst.py

62 lines
1.9 KiB
Python

# Copyright (c) OpenMMLab. All rights reserved.
import argparse
import glob
import logging
import os.path as osp
def check_index_rst(index_file: str):
"""
Check if all md file in index.rst file exist.
Give warning message if md file not added in index.rst
Args:
index_file(str): Path of index.rst file.
Returns:
bool: True if all md file exist and False if any md file not exists.
"""
assert osp.exists(index_file), f'File not exists: {index_file}'
work_dir = osp.dirname(index_file)
md_files = glob.glob(osp.join(work_dir, '**/*.md'), recursive=True)
md_files_rst = []
all_file_exist = True
with open(index_file, 'r') as f:
for idx, line in enumerate(f, start=1):
line = line.strip()
if line.endswith('.md'):
path = osp.join(work_dir, line)
md_files_rst.append(path)
if not osp.exists(path):
all_file_exist = False
logging.error(f'File {line} not exists in '
f'Line {idx} of index_file {index_file}')
# check if all md files added in index.rst index_file
rest_md_files = list(set(md_files) - set(md_files_rst))
if len(rest_md_files) > 0:
for f in rest_md_files:
logging.warning(f'Please check whether file {f} '
f'should be added in {index_file}')
return all_file_exist
def parse_args():
parser = argparse.ArgumentParser(description='Check index.rst.')
parser.add_argument(
'file', type=str, help='Path of index.rst to be checked')
args = parser.parse_args()
return args
def main():
args = parse_args()
success_flag = check_index_rst(args.file)
if not success_flag:
raise RuntimeError(
f'Check fails with {args.file}. Please check logging message.')
if __name__ == '__main__':
main()