add purge feature

pull/241/head
William Ting 11 years ago
parent bde9ac1d9f
commit 95c81b7665

@ -21,6 +21,7 @@
from __future__ import division, print_function
from itertools import ifilter
from math import sqrt
from operator import itemgetter
import os
@ -32,8 +33,8 @@ from argparse import ArgumentParser
from data import save
from data import load
from utils import decode
from utils import encode_local
from utils import is_osx
from utils import print_dir
VERSION = 'release-v21.8.0'
@ -99,9 +100,9 @@ def parse_args(config):
# parser.add_argument(
# '--complete', action="store_true", default=False,
# help='used for tab completion')
# parser.add_argument(
# '--purge', action="store_true", default=False,
# help='delete all database entries that no longer exist on system')
parser.add_argument(
'--purge', action="store_true", default=False,
help='remove non-existent paths from database')
parser.add_argument(
'-s', '--stat', action="store_true", default=False,
help='show database entries and their key weights')
@ -116,25 +117,16 @@ def parse_args(config):
sys.exit(0)
if args.increase:
path, weight = add_path(config, os.getcwd(), args.increase)
print(encode_local("%.1f:\t%s" % (weight, path)))
print_dir(add_path(config, os.getcwd(), args.increase))
sys.exit(0)
if args.decrease:
path, weight = decrease_path(config, os.getcwd(), args.decrease)
print(encode_local("%.1f:\t%s" % (weight, path)))
print_dir(decrease_path(config, os.getcwd(), args.decrease))
sys.exit(0)
# if args.purge:
# removed = db.purge()
# if len(removed):
# for dir in removed:
# output(dir)
# print("Number of database entries removed: %d" % len(removed))
# sys.exit(0)
if args.purge:
print("Purged %d entries." % purge_missing_paths(config))
sys.exit(0)
if args.stat:
print_stats(config)
@ -176,11 +168,20 @@ def decrease_path(config, path, increment=15):
return path, data[path]
def purge_missing_paths(config):
"""Remove non-existent paths."""
exists = lambda x: os.path.exists(x[0])
old_data = load(config)
new_data = dict(ifilter(exists, old_data.iteritems()))
save(config, new_data)
return len(old_data) - len(new_data)
def print_stats(config):
data = load(config)
for path, weight in sorted(data.iteritems(), key=itemgetter(1)):
print(encode_local("%.1f:\t%s" % (weight, path)))
print_dir(path, weight)
print("________________________________________\n")
print("%d:\t total weight" % sum(data.itervalues()))

@ -67,3 +67,7 @@ def move_file(src, dst):
# raises exception if file is in use on Windows
os.remove(dst)
shutil.move(src, dst)
def print_dir(path, weight):
print(encode_local("%.1f:\t%s" % (weight, path)))

Loading…
Cancel
Save