]> arthur.barton.de Git - bup.git/blob - cmd/ls-cmd.py
cmd/ls: fix a typo causing 'bup ls foo/latest' to not work.
[bup.git] / cmd / ls-cmd.py
1 #!/usr/bin/env python
2 import sys, stat
3 from bup import options, git, vfs
4 from bup.helpers import *
5
6 def print_node(text, n):
7     prefix = ''
8     if opt.hash:
9         prefix += "%s " % n.hash.encode('hex')
10     if stat.S_ISDIR(n.mode):
11         print '%s%s/' % (prefix, text)
12     elif stat.S_ISLNK(n.mode):
13         print '%s%s@' % (prefix, text)
14     else:
15         print '%s%s' % (prefix, text)
16
17
18 optspec = """
19 bup ls <dirs...>
20 --
21 s,hash   show hash for each file
22 a,all    show hidden files
23 """
24 o = options.Options(optspec)
25 (opt, flags, extra) = o.parse(sys.argv[1:])
26
27 git.check_repo_or_die()
28 top = vfs.RefList(None)
29
30 if not extra:
31     extra = ['/']
32
33 ret = 0
34 for d in extra:
35     try:
36         n = top.lresolve(d)
37         if stat.S_ISDIR(n.mode):
38             for sub in n:
39                 if opt.all or not sub.name.startswith('.'):
40                     print_node(sub.name, sub)
41         else:
42             if opt.all or not n.name.startswith('.'):
43                 print_node(d, n)
44     except vfs.NodeError, e:
45         log('error: %s\n' % e)
46         ret = 1
47
48 sys.exit(ret)