65 lines
1.9 KiB
Python
Executable File
65 lines
1.9 KiB
Python
Executable File
#!/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) 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()
|