Mercurial > piecrust2
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 +