#!/usr/bin/env python
-import sys, os, re, stat, fnmatch
-from bup import options, git, shquote, vfs
+import sys, os, stat, fnmatch
+from bup import options, git, shquote, vfs, ls
from bup.helpers import *
handle_ctrl_c()
-def node_name(text, n):
- if stat.S_ISDIR(n.mode):
- return '%s/' % text
- elif stat.S_ISLNK(n.mode):
- return '%s@' % text
- else:
- return '%s' % text
-
-
class OptionError(Exception):
pass
-ls_optspec = """
-ls [-a] [path...]
---
-a,all include hidden files in the listing
-"""
-ls_opt = options.Options('ls', ls_optspec, onabort=OptionError)
-
+# Check out lib/bup/ls.py for the opt spec
def do_ls(cmd_args):
try:
- (opt, flags, extra) = ls_opt.parse(cmd_args)
+ ls.do_ls(cmd_args, pwd, onabort=OptionError)
except OptionError, e:
return
- L = []
-
- for path in (extra or ['.']):
- n = pwd.try_resolve(path)
-
- if stat.S_ISDIR(n.mode):
- for sub in n:
- name = sub.name
- if opt.all or not len(name)>1 or not name.startswith('.'):
- L.append(node_name(name, sub))
- else:
- L.append(node_name(path, n))
- print columnate(L, '')
-
def write_to_file(inf, outf):
for blob in chunkyreader(inf):
try:
yield raw_input('bup> ')
except EOFError:
+ print '' # Clear the line for the terminal's next prompt
break
else:
for line in sys.stdin:
def init_readline_vars():
"""Work around trailing space automatically inserted by readline.
See http://bugs.python.org/issue5833"""
- import ctypes
+ try:
+ import ctypes
+ except ImportError:
+ # python before 2.5 didn't have the ctypes module; but those
+ # old systems probably also didn't have this readline bug, so
+ # just ignore it.
+ return
lib_name = find_readline_lib()
if lib_name is not None:
lib = ctypes.cdll.LoadLibrary(lib_name)
optspec = """
bup ftp [commands...]
"""
-o = options.Options('bup ftp', optspec)
+o = options.Options(optspec)
(opt, flags, extra) = o.parse(sys.argv[1:])
git.check_repo_or_die()
if readline:
readline.set_completer_delims(' \t\n\r/')
readline.set_completer(completer)
- readline.parse_and_bind("tab: complete")
+ if sys.platform.startswith('darwin'):
+ # MacOS uses a slighly incompatible clone of libreadline
+ readline.parse_and_bind('bind ^I rl_complete')
+ readline.parse_and_bind('tab: complete')
init_readline_vars()
lines = inputiter()