]> arthur.barton.de Git - bup.git/blob - cmd/join-cmd.py
b445e4dced2acde43d2d7eee79be295941f659fc
[bup.git] / cmd / join-cmd.py
1 #!/bin/sh
2 """": # -*-python-*-
3 bup_python="$(dirname "$0")/bup-python" || exit $?
4 exec "$bup_python" "$0" ${1+"$@"}
5 """
6 # end of bup preamble
7
8 import sys
9
10 from bup import git, options
11 from bup.helpers import linereader, log
12 from bup.repo import LocalRepo, RemoteRepo
13
14
15 optspec = """
16 bup join [-r host:path] [refs or hashes...]
17 --
18 r,remote=  remote repository path
19 o=         output filename
20 """
21 o = options.Options(optspec)
22 (opt, flags, extra) = o.parse(sys.argv[1:])
23
24 git.check_repo_or_die()
25
26 if not extra:
27     extra = linereader(sys.stdin)
28
29 ret = 0
30 repo = RemoteRepo(opt.remote) if opt.remote else LocalRepo()
31
32 if opt.o:
33     outfile = open(opt.o, 'wb')
34 else:
35     outfile = sys.stdout
36
37 for ref in extra:
38     try:
39         for blob in repo.join(ref):
40             outfile.write(blob)
41     except KeyError as e:
42         outfile.flush()
43         log('error: %s\n' % e)
44         ret = 1
45
46 sys.exit(ret)