mirror of
https://github.com/wting/autojump
synced 2024-10-27 20:34:07 +00:00
add purge option to clear database of missing entries
This commit is contained in:
parent
a4cbff774b
commit
60a9c1c2f1
@ -114,6 +114,8 @@ Options must be passed to 'autojump' and not the 'j' wrapper function.
|
|||||||
|
|
||||||
-a, --add DIR manually add path to database
|
-a, --add DIR manually add path to database
|
||||||
|
|
||||||
|
--purge deletes all database entries that no longer exist on system
|
||||||
|
|
||||||
--stat show database entries and their key weights
|
--stat show database entries and their key weights
|
||||||
|
|
||||||
--version show version information and exit
|
--version show version information and exit
|
||||||
|
24
bin/autojump
24
bin/autojump
@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
Copyright © 2008-2012 Joel Schaerer
|
Copyright © 2008-2012 Joel Schaerer
|
||||||
Copyright © 2012 William Ting
|
Copyright © 2012 William Ting
|
||||||
@ -28,7 +29,7 @@ import shutil
|
|||||||
import sys
|
import sys
|
||||||
from tempfile import NamedTemporaryFile
|
from tempfile import NamedTemporaryFile
|
||||||
|
|
||||||
VERSION = 'release-v20-3'
|
VERSION = 'release-v20-4'
|
||||||
MAX_KEYWEIGHT = 1000
|
MAX_KEYWEIGHT = 1000
|
||||||
MAX_STORED_PATHS = 1000
|
MAX_STORED_PATHS = 1000
|
||||||
COMPLETION_SEPARATOR = '__'
|
COMPLETION_SEPARATOR = '__'
|
||||||
@ -122,6 +123,16 @@ class Database:
|
|||||||
self.trim()
|
self.trim()
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
def purge(self):
|
||||||
|
""" Deletes all entries that no longer exist on system. """
|
||||||
|
removed = []
|
||||||
|
for path in self.data.keys():
|
||||||
|
if not os.path.exists(path):
|
||||||
|
removed.append(path)
|
||||||
|
del self.data[path]
|
||||||
|
self.save()
|
||||||
|
return removed
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
""" Save database atomically and preserve backup. """
|
""" Save database atomically and preserve backup. """
|
||||||
# check file existence and permissions
|
# check file existence and permissions
|
||||||
@ -186,6 +197,8 @@ def options():
|
|||||||
help='enclose directory quotes to prevent errors')
|
help='enclose directory quotes to prevent errors')
|
||||||
parser.add_argument('--complete', action="store_true", default=False,
|
parser.add_argument('--complete', action="store_true", default=False,
|
||||||
help='used for bash tab completion')
|
help='used for bash 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('--stat', action="store_true", default=False,
|
parser.add_argument('--stat', action="store_true", default=False,
|
||||||
help='show database entries and their key weights')
|
help='show database entries and their key weights')
|
||||||
parser.add_argument('--version', action="version", version="%(prog)s " + VERSION,
|
parser.add_argument('--version', action="version", version="%(prog)s " + VERSION,
|
||||||
@ -201,6 +214,15 @@ def options():
|
|||||||
db.save()
|
db.save()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
if (ARGS.purge):
|
||||||
|
db = Database(DB_FILE)
|
||||||
|
removed = db.purge()
|
||||||
|
if len(removed) > 0:
|
||||||
|
for dir in removed:
|
||||||
|
output(unico(dir))
|
||||||
|
print("Number of database entries removed: %d" % len(removed))
|
||||||
|
return True
|
||||||
|
|
||||||
if (ARGS.stat):
|
if (ARGS.stat):
|
||||||
db = Database(DB_FILE)
|
db = Database(DB_FILE)
|
||||||
dirs = list(db.data.items())
|
dirs = list(db.data.items())
|
||||||
|
@ -35,6 +35,8 @@ wrapper function.
|
|||||||
\f[C]
|
\f[C]
|
||||||
-a,\ --add\ DIR\ \ \ \ \ \ \ manually\ add\ path\ to\ database
|
-a,\ --add\ DIR\ \ \ \ \ \ \ manually\ add\ path\ to\ database
|
||||||
|
|
||||||
|
--purge\ \ \ \ \ \ \ \ \ \ \ \ \ deletes\ all\ database\ entries\ that\ no\ longer\ exist\ on\ system
|
||||||
|
|
||||||
--stat\ \ \ \ \ \ \ \ \ \ \ \ \ \ show\ database\ entries\ and\ their\ key\ weights
|
--stat\ \ \ \ \ \ \ \ \ \ \ \ \ \ show\ database\ entries\ and\ their\ key\ weights
|
||||||
|
|
||||||
--version\ \ \ \ \ \ \ \ \ \ \ show\ version\ information\ and\ exit
|
--version\ \ \ \ \ \ \ \ \ \ \ show\ version\ information\ and\ exit
|
||||||
|
@ -4,6 +4,8 @@ Options must be passed to 'autojump' and not the 'j' wrapper function.
|
|||||||
|
|
||||||
-a, --add DIR manually add path to database
|
-a, --add DIR manually add path to database
|
||||||
|
|
||||||
|
--purge deletes all database entries that no longer exist on system
|
||||||
|
|
||||||
--stat show database entries and their key weights
|
--stat show database entries and their key weights
|
||||||
|
|
||||||
--version show version information and exit
|
--version show version information and exit
|
||||||
|
@ -15,4 +15,4 @@ else
|
|||||||
gitrevision="$1"
|
gitrevision="$1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sed -i "s/^AUTOJUMP_VERSION = \".*\"$/AUTOJUMP_VERSION = \"$gitrevision\"/" ./bin/autojump
|
sed -i "s/^VERSION = \".*\"$/VERSION = \"$gitrevision\"/" ./bin/autojump
|
||||||
|
Loading…
Reference in New Issue
Block a user