handle page deletes gracefully
1 files changed, 12 insertions(+), 4 deletions(-)

M muyhomepage2/app/build.py
M muyhomepage2/app/build.py +12 -4
@@ 60,11 60,18 @@ def dumppages(config):
 
 def build(config):
     website = site.Site()
-    website.pages = site.read_site_pages(config.page_cache())
+    allfiles = set(page.walkpages(config.root()))
+    website.pages = set()
+    cached = set()
+    for cpage in site.read_site_pages(config.page_cache()):
+        if cpage.filename not in allfiles:
+            continue
+        website.pages.add(cpage)
+        cached.add(cpage.filename)
+
     site.update_site_tags(website, config.tag_cache())
     rebuild = set()
-    cached = [p.filename for p in website.pages]
-    for pagefile in page.walkpages(config.root()):
+    for pagefile in allfiles:
         if pagefile not in cached:
             npage = page.parse(pagefile)
             rebuild.add(npage)

          
@@ 76,13 83,14 @@ def build(config):
     for spage in website.pages:
         if spage.action in config.always_rebuild():
             rebuild.add(page.parse(spage.filename))
+    # remove any pages from the cache that are gone
     compile_pages(config, website, rebuild)
     site.write_site_pages(website, config.page_cache())
     site.write_site_tags(website, config.tag_cache())
 
 
 def compile_pages(config, website, rebuild):
-    for page in rebuild:
+    for page in sorted(rebuild, key=lambda p: p.filename):
         phandler = handle_action(
             config.handlers(),
             config.defaulthandler(),