X-Git-Url: https://git.phdru.name/?p=phdru.name%2Fphdru.name.git;a=blobdiff_plain;f=gen-sitemap.py;h=32c729dfabefcc7d9047e9c2a442aaae46bb8ed6;hp=1a78a7fb84b8fda32dbfdd1a3712ad8aa922668c;hb=HEAD;hpb=8383bd5528ad8c6f3395ab2aaac5f068514965fe diff --git a/gen-sitemap.py b/gen-sitemap.py index 1a78a7f..32c729d 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', @@ -11,10 +12,11 @@ parser.add_argument('root_dir', help='Root dicrectory') args = parser.parse_args() exclude = [] -for pat in args.exclude: - exclude.append(pat) - if not pat.endswith('/*'): - exclude.append(pat + '/*') +if args.exclude: + for pat in args.exclude: + exclude.append(pat) + if not pat.endswith('/*'): + exclude.append(pat + '/*') os.chdir(args.root_dir) fullpath = os.getcwd() @@ -38,13 +40,53 @@ for dirpath, dirs, files in sorted(os.walk(fullpath)): current_subtree = tree[1] for i in range(level): current_subtree = current_subtree[-1][1] - current_subtree.append((parts[-1], [])) - elif level == save_level: - current_subtree.append((parts[-1], [])) elif level > save_level: assert level - save_level == 1 current_subtree = current_subtree[-1][1] - current_subtree.append((parts[-1], [])) + #else: # level == save_level: + current_subtree.append((parts[-1], [])) save_level = level except StopIteration: pass + +def _tree2html(tree, path='', level=0): + subparts = [] + indent = " " * (level + 1) + for title, subtree in tree: + subpath = "%s/%s" % (path, title) + if subpath.startswith('/'): + subpath = subpath[1:] + href = '%s' % (subpath, title) + if subtree: + subparts.append(indent + "
  • %s" % href) + subparts.append(_tree2html(subtree, subpath, level+2)) + subparts.append(indent + "
  • ") + else: + subparts.append(indent + "
  • %s
  • " % href) + s = "\n".join(subparts) + + parts = [] + indent = " " * level + parts.append(indent + "") + + return "\n".join(parts) + +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))