summaryrefslogtreecommitdiff
path: root/seivot
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-04-19 20:00:01 +0100
committerLars Wirzenius <liw@liw.fi>2011-04-19 20:00:01 +0100
commit15b1523142c031a0fe46ae0c06adc97ba8be2265 (patch)
tree711f5b52205f74284d20fcbd40dbac6672cda44d /seivot
parent2dbd68ab29466abae17422bb55a436fbe75da8f9 (diff)
downloadseivot-15b1523142c031a0fe46ae0c06adc97ba8be2265.tar.gz
Implement list_files for obnam.
Diffstat (limited to 'seivot')
-rwxr-xr-xseivot23
1 files changed, 18 insertions, 5 deletions
diff --git a/seivot b/seivot
index a65a4bc..bc75ba2 100755
--- a/seivot
+++ b/seivot
@@ -25,7 +25,11 @@ import time
def runcmd(argv, **kwargs):
logging.debug('run: %s %s' % (argv, kwargs))
- subprocess.check_call(argv, **kwargs)
+ p = subprocess.Popen(argv, **kwargs)
+ out, err = p.communicate()
+ if p.returncode != 0:
+ raise Exception('command failed: %s\n%s' % (argv, err))
+ return out
class BackupProgram(object):
@@ -81,10 +85,10 @@ class Obnam(BackupProgram):
def _branch(self):
return self.settings['obnam-branch'] or None
- def _run(self, args):
- runcmd([self._cmd, '--log', '/dev/null',
- '--repository', self.repo] + args,
- cwd=self._branch)
+ def _run(self, args, **kwargs):
+ return runcmd([self._cmd, '--log', '/dev/null',
+ '--repository', self.repo] + args,
+ cwd=self._branch, **kwargs)
def prepare(self):
if self._branch:
@@ -93,6 +97,15 @@ class Obnam(BackupProgram):
def backup(self):
self._run(['backup', self.live_data])
+
+ def _genid(self, gen):
+ out = self._run(['genids'], stdout=subprocess.PIPE)
+ return out.splitlines()[gen]
+
+ def list_files(self, gen):
+ devnull = os.open('/dev/null', os.O_WRONLY)
+ self._run(['ls', self._genid(gen)], stdout=devnull)
+ os.close(devnull)
class BackupProgramFactory(object):