53266a3836
Depending on the version of Python 3 the user has installed, 'open' may default to using 'ascii' encoding. Since the documentation is in UTF-8, and contains characters beyond 'ascii', this will result in failures when using these versions of Python. Fix this by being explicit about the encoding to be used when reading these files. Signed-off-by: David Brown <david.brown@linaro.org> Change-Id: I54c69334c6bf377f1135cec04f4e0ea96a8e9a5b
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, 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()
|