import ranger.api
|
|
from ranger.api.commands import *
|
|
from os import getenv
|
|
import re
|
|
|
|
|
|
class z(Command):
|
|
""":z
|
|
Uses .z file to set the current directory.
|
|
"""
|
|
def execute(self):
|
|
|
|
# location of .z file
|
|
z_loc = getenv("_Z_DATA") or getenv("HOME")+"/.z"
|
|
with open(z_loc,"r") as fobj:
|
|
flists = fobj.readlines()
|
|
|
|
# user given directory
|
|
req = re.compile(".*".join(self.args[1:]),re.IGNORECASE)
|
|
directories = []
|
|
for i in flists:
|
|
if req.search(i):
|
|
directories.append(i.split("|")[0])
|
|
|
|
try:
|
|
# smallest(length) directory will be the directory required
|
|
self.fm.execute_console("cd " + min(directories,key=lambda x: len(x)))
|
|
except Exception as e:
|
|
raise Exception("Directory not found")
|