]> arthur.barton.de Git - bup.git/blobdiff - cmd/ls-cmd.py
Refactor: unify ls/ftp-ls code
[bup.git] / cmd / ls-cmd.py
index f2252b34023637215411cedd3f557a44d4949f7f..581d6e116891387659dec7ee1d04fd6098bd37d0 100755 (executable)
@@ -1,57 +1,13 @@
 #!/usr/bin/env python
-import sys, stat
-from bup import options, git, vfs
+import sys
+from bup import git, vfs, ls
 from bup.helpers import *
 
-def node_name(text, n):
-    prefix = ''
-    if opt.hash:
-        prefix += "%s " % n.hash.encode('hex')
-    if stat.S_ISDIR(n.mode):
-        return '%s%s/' % (prefix, text)
-    elif stat.S_ISLNK(n.mode):
-        return '%s%s@' % (prefix, text)
-    else:
-        return '%s%s' % (prefix, text)
-
-
-optspec = """
-bup ls <dirs...>
---
-s,hash   show hash for each file
-a,all    show hidden files
-"""
-o = options.Options(optspec)
-(opt, flags, extra) = o.parse(sys.argv[1:])
 
 git.check_repo_or_die()
 top = vfs.RefList(None)
 
-if not extra:
-    extra = ['/']
-
-ret = 0
-for d in extra:
-    L = []
-    try:
-        n = top.lresolve(d)
-        if stat.S_ISDIR(n.mode):
-            for sub in n:
-                if opt.all or not sub.name.startswith('.'):
-                    if istty1:
-                        L.append(node_name(sub.name, sub))
-                    else:
-                        print node_name(sub.name, sub)
-        else:
-            if istty1:
-                L.append(node_name(d, n))
-            else:
-                print node_name(d, n)
-    except vfs.NodeError, e:
-        log('error: %s\n' % e)
-        ret = 1
-
-if istty1:
-    sys.stdout.write(columnate(L, ''))
+# Check out lib/bup/ls.py for the opt spec
+ret = ls.do_ls(sys.argv[1:], top, default='/', spec_prefix='bup ')
 
 sys.exit(ret)