summaryrefslogtreecommitdiffstats
path: root/modules/packagesource.py
diff options
context:
space:
mode:
authorYaakov M. Nemoy <loupgaroublond@gmail.com>2009-01-18 17:10:15 -0500
committerYaakov M. Nemoy <loupgaroublond@gmail.com>2009-01-18 17:10:15 -0500
commitc98a858abe7d209b602aaad6e01dbbf8e66bdf21 (patch)
tree61f56439a4a7980c6265438f1409be37c04740f4 /modules/packagesource.py
parentd479ded1669de67df94fe62c2c1c896a4694b874 (diff)
downloadfedora-devshell-c98a858abe7d209b602aaad6e01dbbf8e66bdf21.tar.gz
fedora-devshell-c98a858abe7d209b602aaad6e01dbbf8e66bdf21.tar.xz
fedora-devshell-c98a858abe7d209b602aaad6e01dbbf8e66bdf21.zip
Refactor some generic stuff out of darcs into packagesource
Diffstat (limited to 'modules/packagesource.py')
-rw-r--r--modules/packagesource.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/modules/packagesource.py b/modules/packagesource.py
index d556ef5..b0b87b8 100644
--- a/modules/packagesource.py
+++ b/modules/packagesource.py
@@ -74,6 +74,34 @@ class PackageSource(Directory):
'''
return join(self.dir, self.source)
+ @contextmanager
+ def src_dir(self, *args):
+ '''executes a code block inside a specific branch and or checkout
+ '''
+ with src(*args):
+ with pwd(self.source_dir):
+ yield
+
+ @contextmanager
+ def src(self, *args):
+ '''executes a code block with a particular branch or checkout
+
+ if there are no args, this block is executed in the raw
+ '''
+ if args:
+ old_src = self.cfg['source']
+ self.set_cur_to(*args)
+ yield
+ if args:
+ self.cfg['source'] = old_src
+ self.set_current_src()
+
+ def set_current_src(self):
+ raise NotImplementedError
+
+ def set_cur_to(self, *args):
+ raise NotImplementedError
+
def branch(self, *args):
raise NotImplementedError