X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fjoin-cmd.py;h=68c31eedcb7e24f7d54927d40017f5dedfc20c77;hb=c40b3dd5fd74e72024fbaad3daf5a958aefa1c54;hp=81febac4b23c39b3cd3d973e93064eb9f477bd45;hpb=e3c617fdb6974ad754efb94fea828a9cf8312f9c;p=bup.git diff --git a/cmd/join-cmd.py b/cmd/join-cmd.py index 81febac..68c31ee 100755 --- a/cmd/join-cmd.py +++ b/cmd/join-cmd.py @@ -1,15 +1,25 @@ -#!/usr/bin/env python +#!/bin/sh +"""": # -*-python-*- +bup_python="$(dirname "$0")/bup-python" || exit $? +exec "$bup_python" "$0" ${1+"$@"} +""" +# end of bup preamble + +from __future__ import absolute_import import sys -from bup import git, options, client -from bup.helpers import * + +from bup import git, options +from bup.helpers import linereader, log +from bup.repo import LocalRepo, RemoteRepo optspec = """ bup join [-r host:path] [refs or hashes...] -- r,remote= remote repository path +o= output filename """ -o = options.Options('bup join', optspec) +o = options.Options(optspec) (opt, flags, extra) = o.parse(sys.argv[1:]) git.check_repo_or_die() @@ -18,20 +28,19 @@ if not extra: extra = linereader(sys.stdin) ret = 0 +repo = RemoteRepo(opt.remote) if opt.remote else LocalRepo() -if opt.remote: - cli = client.Client(opt.remote) - cat = cli.cat +if opt.o: + outfile = open(opt.o, 'wb') else: - cp = git.CatPipe() - cat = cp.join + outfile = sys.stdout -for id in extra: +for ref in extra: try: - for blob in cat(id): - sys.stdout.write(blob) - except KeyError, e: - sys.stdout.flush() + for blob in repo.join(ref): + outfile.write(blob) + except KeyError as e: + outfile.flush() log('error: %s\n' % e) ret = 1