import argparse
from fnmatch import fnmatch
import os
+from news import write_if_changed
parser = argparse.ArgumentParser(description='Generate sitemap')
parser.add_argument('-x', '--exclude', action='append',
fullpath = os.getcwd()
fp_len = len(fullpath)
+tree = ('', [])
+current_subtree = tree[1]
+save_level = 0
+
for dirpath, dirs, files in sorted(os.walk(fullpath)):
try:
dirpath = dirpath[fp_len:]
raise StopIteration
parts = dirpath.split('/')
level = len(parts) - 2
- print ' ' * level + parts[-1]
+ if level < save_level:
+ current_subtree = tree[1]
+ for i in range(level):
+ current_subtree = current_subtree[-1][1]
+ elif level > save_level:
+ assert level - save_level == 1
+ current_subtree = current_subtree[-1][1]
+ #else: # level == save_level:
+ current_subtree.append((parts[-1], []))
+ save_level = level
except StopIteration:
pass
+
+def _tree2html(tree, level=0):
+ indent = " " * level
+ strings = []
+ strings.append(indent + "<ul>")
+
+ level += 1
+ indent2 = " " * level
+
+ for title, subtree in tree:
+ if subtree:
+ strings.append(indent2 + "<li>%s" % title)
+ strings.append(_tree2html(subtree, level+1))
+ strings.append(indent2 + "</li>")
+ else:
+ strings.append(indent2 + "<li>%s</li>" % title)
+
+ strings.append(indent + "</ul>")
+ return '\n'.join(strings)
+
+write_if_changed("sitemap.html", _tree2html(tree[1]))