]> arthur.barton.de Git - bup.git/blob - t/subtree-hash
Given bup-python, rm vestigial PYTHONPATH settings
[bup.git] / t / subtree-hash
1 #!/bin/sh
2 """": # -*-python-*-
3 bup_python="$(dirname "$0")/../cmd/bup-python" || exit $?
4 exec "$bup_python" "$0" ${1+"$@"}
5 """
6 # end of bup preamble
7
8 from __future__ import absolute_import
9 import os, sys
10
11 from bup.helpers import handle_ctrl_c, readpipe
12 from bup import options
13
14
15 optspec = """
16 subtree-hash ROOT_HASH [PATH_ITEM...]
17 --
18 """
19
20 handle_ctrl_c()
21
22 o = options.Options(optspec)
23 (opt, flags, extra) = o.parse(sys.argv[1:])
24
25 if len(extra) < 1:
26     o.fatal('must specify a root hash')
27
28 tree_hash = extra[0]
29 path = extra[1:]
30
31 while path:
32     target_name = path[0]
33     subtree_items = readpipe(['git', 'ls-tree', '-z', tree_hash])
34     target_hash = None
35     for entry in subtree_items.split('\0'):
36         if not entry:
37             break
38         info, name = entry.split('\t', 1)
39         if name == target_name:
40             _, _, target_hash = info.split(' ')
41             break
42     if not target_hash:
43         print >> sys.stderr, "Can't find %r in %s" % (target_name, tree_hash)
44         break
45     tree_hash = target_hash
46     path = path[1:]
47
48 if path:
49     sys.exit(1)
50
51 print tree_hash