X-Git-Url: https://git.phdru.name/?p=phdru.name%2Fphdru.name.git;a=blobdiff_plain;f=gen-sitemap.py;h=088f83819e4c8d491fa0ac69e4eb8ab632c3cb06;hp=1afe424131947fac5bd56bb175d6ab734661fb71;hb=faa336e3b58a3a51edcfd5da191dc0dcdac3b2be;hpb=5107d4f2a2139f5437eac462db3e80e7f58558f3 diff --git a/gen-sitemap.py b/gen-sitemap.py index 1afe424..088f838 100755 --- a/gen-sitemap.py +++ b/gen-sitemap.py @@ -3,6 +3,7 @@ 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', @@ -20,6 +21,10 @@ os.chdir(args.root_dir) 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:] @@ -30,6 +35,52 @@ for dirpath, dirs, files in sorted(os.walk(fullpath)): 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 + "") + return '\n'.join(strings) + +sitemap_tmpl = ["""\ +#extends phd_site +#implements respond +#attr $Title = 'Sitemap' +#attr $Copyright = 2015 +## +#def body_html +"""] + +sitemap_tmpl.append(_tree2html(tree[1])) + +sitemap_tmpl.append(""" +#end def +$phd_site.respond(self) +""") + +write_if_changed("sitemap.tmpl", ''.join(sitemap_tmpl))