62 lines
1.9 KiB
Python
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()
|