Source code for cacheblob.cli

# -*- coding: utf-8 -*-

"""
CacheBlob CLI interface. Fetch or purge items.

Usage:
    cli.py (fetch|purge|purge_any_expired) [INDEX ...]
    cli.py --handler=sqlite (fetch|purge|purge_any_expired) [INDEX ...]
    cli.py --handler=gzip --index_file=index.db (fetch|purge|purge_any_expired) [INDEX ...]
    cli.py --handler=plaintext --directory=data (fetch|purge|purge_any_expired) [INDEX ...]

Options:
    -h --help               Show this screen.
    --version               Show version.
    --handler=<sqlite>      Handler type [default: sqlite]
    --directory=<data>      Directory if applicable [default: data]
    --index_file=<index.db> Index file if applicable [default: index.db]

If no arguments are specified to fetch, all INDEX are fetched. Purge, however,
will not let you purge everything that easily.
"""

import sys
import os
import pprint
import docopt

CURRENT_DIR = os.path.dirname(__file__)
sys.path.insert(0, os.path.abspath(os.path.join(CURRENT_DIR, "..")))

from cacheblob import Cacheblob
from cacheblob import __version__

import cacheblob.constants as C

[docs]def main(): """Main CLI handler. :returns: 0 on success, exits with message otherwise. """ args = docopt.docopt(__doc__, version=__version__) if args['--handler'] not in C.IMPLEMENTED_HANDLERS: raise ValueError("Handler \"{}\" is not defined".format(args['--handler'])) cache = Cacheblob.cache(handler=args['--handler']) #print("cache is a {}".format(cache)) if args['--directory']: cache.directory = args['--directory'] if args['fetch']: if not len(args['INDEX']): for item in cache.fetch_all(): pprint.pprint(item.__dict__) else: for index in args['INDEX']: item = cache.fetch(index) if item is None: print("Item with index \"{}\" not found".format(index)) else: pprint.pprint(item.__dict__) elif args['purge']: if not len(args['INDEX']): print("Purged items must be specified individually") else: for index in args['INDEX']: result = cache.purge(index) if result: print("Purged item with index \"{}\"".format(index)) else: print("Could not purge item with index \"{}\"".format(index)) elif args['purge_any_expired']: count = cache.purge_any_expired() if count == 1: print("Purged 1 item") else: print("Purged {} items".format(count)) return 0
if __name__ == '__main__': main()