summaryrefslogtreecommitdiffstats
path: root/modules/directory.py
diff options
context:
space:
mode:
Diffstat (limited to 'modules/directory.py')
-rw-r--r--modules/directory.py50
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']