| #!/usr/bin/env python3 |
| # |
| # Copyright (c) 2017, Intel Corporation |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| # Very quick script to move docs from different places into the doc directory |
| # to fix the website and external links |
| |
| import os |
| import shutil |
| import re |
| import sys |
| import fnmatch |
| |
| |
| # direcories to search for .rst files |
| CONTENT_DIRS = ["samples", "boards"] |
| |
| # directives to parse for included files |
| DIRECTIVES = ["figure","include","image","literalinclude"] |
| |
| if "ZEPHYR_BASE" not in os.environ: |
| sys.stderr.write("$ZEPHYR_BASE environment variable undefined.\n") |
| exit(1) |
| ZEPHYR_BASE = os.environ["ZEPHYR_BASE"] |
| |
| def get_rst_files(dir): |
| matches = [] |
| for root, dirnames, filenames in os.walk('%s/%s' %(ZEPHYR_BASE, dir)): |
| for filename in fnmatch.filter(filenames, '*.rst'): |
| matches.append(os.path.join(root, filename)) |
| for file in matches: |
| frel = file.replace(ZEPHYR_BASE,"").strip("/") |
| dir=os.path.dirname(frel) |
| if not os.path.exists(os.path.join(ZEPHYR_BASE, "doc", dir)): |
| os.makedirs(os.path.join(ZEPHYR_BASE, "doc", dir)) |
| |
| shutil.copyfile(file, os.path.join(ZEPHYR_BASE, "doc", frel)) |
| |
| with open(file, encoding="utf-8") as f: |
| content = f.readlines() |
| content = [x.strip() for x in content] |
| directives = "|".join(DIRECTIVES) |
| pattern = re.compile("\s*\.\.\s+(%s)::\s+(.*)" %directives) |
| for l in content: |
| m = pattern.match(l) |
| if m: |
| inf = m.group(2) |
| ind = os.path.dirname(inf) |
| if not os.path.exists(os.path.join(ZEPHYR_BASE, "doc", dir, ind)): |
| os.makedirs(os.path.join(ZEPHYR_BASE, "doc", dir, ind)) |
| |
| shutil.copyfile(os.path.join(ZEPHYR_BASE, dir, inf), |
| os.path.join(ZEPHYR_BASE, "doc", dir, inf)) |
| |
| f.close() |
| |
| def main(): |
| for d in CONTENT_DIRS: |
| get_rst_files(d) |
| |
| if __name__ == "__main__": |
| main() |