diff options
Diffstat (limited to 'modules/directory.py')
| -rw-r--r-- | modules/directory.py | 50 |
1 files changed, 42 insertions, 8 deletions
diff --git a/modules/directory.py b/modules/directory.py index 40f288f..139a2c9 100644 --- a/modules/directory.py +++ b/modules/directory.py @@ -25,9 +25,9 @@ from os.path import abspath, join, split, splitext, basename, exists, dirname from base.base import log from base.module import Module -from base.util import pwd +from base.util import pwd, copytree - +from modules.dirfactory import DirFactory class Directory(Module): _type = 'directory' def __init__(self, name=None): @@ -64,10 +64,15 @@ class Directory(Module): def load_dir(self, dir): log.debug('directory.load_dir') with pwd(dir): + parent, name = split(getcwd()) + self.parent = parent self.cfg = ConfigObj('.devshell') - self.name = self.cfg['name'] - self.parent = self.cfg['parent'] - self.dir = self.cfg['dir'] + if not self.name == name: + # we are saving name in the .devshell file so we can detect + # if the name has been changed or not. we don't want to have to run + # rename all the time + self.rename(name) + pass def make_dir(self, dir): log.debug('directory.make_dir') @@ -75,15 +80,44 @@ class Directory(Module): self.cfg = ConfigObj('.devshell') parent, name = split(getcwd()) self.cfg['type'] = self._type - self.cfg['name'] = self.name = name - self.cfg['parent'] = self.parent = parent - self.cfg['dir'] = self.dir = dir + self.cfg['name'] = name + self.parent = parent self.cfg.write() + @property + def name(self): + return self.cfg['name'] + + @property + def parent(self): + return self.cfg['parent'] + + @property + def dir(self): + return join(self.parent, self.name) + def close(self): log.debug('writing self.cfg for directory') with pwd(self.dir): self.cfg.write() + def rename(self, new_name): + self.cfg['name'] = new_name + + def move(self, new_loc): + new_loc = abspath(new_loc) + new_parent, new_name = split(new_loc) + old_dir = self.dir + copytree(self.dir, new_loc) + self.parent = new_parent + self.rename(new_name) + rm(old_dir) + + def copy(self, new_loc): + new_loc = abspath(new_loc) + new_parent, new_name = split(new_loc) + copytree(self.dir, new_loc) + new_dir = DirFactory(new_loc) + return new_dir __all__ = ['Directory'] |
