diff piecrust/cache.py @ 371:c2ca72fb7f0b 2.0.0a8

caching: Use separate caches for config variants and other contexts. * The `_cache` directory is now organized in multiple "sub-caches" for different contexts. * A new context is created when config variants or overrides are applied. * `serve` context uses a different context that the other commends, to prevent the `bake` command's output from messing up the preview server (e.g. with how asset URLs are generated differently between the two). * Fix a few places where the cache directory was referenced directly.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 03 May 2015 23:59:46 -0700
parents 7d2fdf43d7ca
children ff6cc43fb40c
line wrap: on
line diff
--- a/piecrust/cache.py	Sun May 03 23:45:32 2015 -0700
+++ b/piecrust/cache.py	Sun May 03 23:59:46 2015 -0700
@@ -1,5 +1,6 @@
 import os
 import os.path
+import shutil
 import codecs
 import logging
 import threading
@@ -41,6 +42,16 @@
             return dirnames
         return [dn for dn in dirnames if dn not in except_names]
 
+    def clearCache(self, name):
+        cache_dir = self.getCacheDir(name)
+        if os.path.isdir(cache_dir):
+            logger.debug("Cleaning cache: %s" % cache_dir)
+            shutil.rmtree(cache_dir)
+
+    def clearCaches(self, except_names=None):
+        for name in self.getCacheNames(except_names=except_names):
+            self.clearCache(name)
+
 
 class SimpleCache(object):
     def __init__(self, base_dir):
@@ -122,3 +133,15 @@
     def getCache(self, name):
         return self.null_cache
 
+    def getCacheDir(self, name):
+        raise NotImplementedError()
+
+    def getCacheNames(self, except_names=None):
+        return []
+
+    def clearCache(self, name):
+        pass
+
+    def clearCaches(self, except_names=None):
+        pass
+