]> arthur.barton.de Git - bup.git/blob - cmd-ls.py
2ce6bb039b5f1dfb8b87728d5bb413aa879c2cef
[bup.git] / cmd-ls.py
1 #!/usr/bin/env python
2 import sys, os, stat
3 import options, git, vfs
4 from 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 """
23 o = options.Options('bup ls', optspec)
24 (opt, flags, extra) = o.parse(sys.argv[1:])
25
26 git.check_repo_or_die()
27 top = vfs.RefList(None)
28
29 if not extra:
30     extra = ['/']
31
32 ret = 0
33 for d in extra:
34     try:
35         n = top.lresolve(d)
36         if stat.S_ISDIR(n.mode):
37             for sub in n:
38                 print_node(sub.name, sub)
39         else:
40             print_node(d, n)
41     except vfs.NodeError, e:
42         log('error: %s\n' % e)
43         ret = 1
44
45 sys.exit(ret)