[CalendarServer-changes] [11219] CalDAVClientLibrary/trunk/caldavclientlibrary/browser

source_changes at macosforge.org source_changes at macosforge.org
Fri May 17 19:04:35 PDT 2013


Revision: 11219
          http://trac.calendarserver.org//changeset/11219
Author:   cdaboo at apple.com
Date:     2013-05-17 19:04:35 -0700 (Fri, 17 May 2013)
Log Message:
-----------
Fix tab completion when there are cli options present.

Modified Paths:
--------------
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/baseshell.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/command.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/acl.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/addressbooks.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/attach.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/calendars.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/cat.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/cd.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/import.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/ls.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mkadbk.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mkcal.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mkdir.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mv.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/props.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/put.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/query.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/quota.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/rm.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/share.py
    CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/sync.py

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/baseshell.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/baseshell.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/baseshell.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -185,9 +185,12 @@
         # if self.last_wd_complete[0] == text:
         #    return self.last_wd_complete[1]
 
+        # Split on whitespace and use the last item as the token
+        tokens = text.split()
+
         # Look for relative vs absolute
-        if text and text[0] == "/":
-            dirname, _ignore_child = os.path.split(text)
+        if tokens[-1] and tokens[-1][0] == "/":
+            dirname, _ignore_child = os.path.split(tokens[-1])
             path = dirname
             if not path.endswith("/"):
                 path += "/"
@@ -195,7 +198,7 @@
         else:
             path = self.wd
             pathlen = len(path) + (0 if path.endswith("/") else 1)
-            dirname, _ignore_child = os.path.split(text)
+            dirname, _ignore_child = os.path.split(tokens[-1])
             if dirname:
                 path = os.path.join(path, dirname)
             if not path.endswith("/"):
@@ -209,10 +212,10 @@
         results = [urllib.unquote(result) for result in results.iterkeys()]
         results = [result[pathlen:] for result in results if len(result) > pathlen]
         # print results
-        if text:
-            textlen = len(text)
-            results = [result for result in results if result[:textlen] == text]
+        if tokens[-1]:
+            textlen = len(tokens[-1])
+            results = [result for result in results if result[:textlen] == tokens[-1]]
             # print results
 
-        self.last_wd_complete = (text, results,)
+        self.last_wd_complete = (tokens[-1], results,)
         return results

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/command.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/command.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/command.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -20,6 +20,7 @@
 
         self.shell = None
         self.cmds = ()
+        self.do_wd_complete = False
 
 
     def execute(self, name, options):
@@ -58,7 +59,7 @@
 
 
     def complete(self, text):
-        return ()
+        return () if not self.do_wd_complete else self.shell.wdcomplete(text)
 
 
 

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/acl.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/acl.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/acl.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -35,6 +35,7 @@
         super(Command, self).__init__()
         self.cmds = ("acl",)
         self.subshell = None
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/addressbooks.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/addressbooks.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/addressbooks.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -25,6 +25,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("addressbooks",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -60,10 +61,6 @@
         return result
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s [PRINCIPAL]
 PRINCIPAL is a principal-URL or principal UID..

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/attach.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/attach.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/attach.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -26,6 +26,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("attach",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -118,10 +119,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s OPTIONS PATH
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/calendars.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/calendars.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/calendars.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -25,6 +25,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("calendars",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -60,10 +61,6 @@
         return result
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s [PRINCIPAL]
 PRINCIPAL is a principal-URL or principal UID.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/cat.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/cat.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/cat.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -26,6 +26,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("cat", "more",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -48,10 +49,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s PATH
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/cd.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/cd.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/cd.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -25,6 +25,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("cd",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -52,10 +53,6 @@
         return result
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s PATH
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/import.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/import.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/import.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -26,6 +26,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("import",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -89,10 +90,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s OPTIONS PATH
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/ls.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/ls.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/ls.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -29,6 +29,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("ls",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -155,10 +156,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s [OPTIONS] [PATH]
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mkadbk.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mkadbk.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mkadbk.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -26,6 +26,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("mkadbk",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -54,10 +55,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s PATH
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mkcal.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mkcal.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mkcal.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -26,6 +26,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("mkcal",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -54,10 +55,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s PATH
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mkdir.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mkdir.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mkdir.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -26,6 +26,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("mkdir",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -54,10 +55,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s PATH
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mv.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mv.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/mv.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -27,6 +27,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("mv", "move",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -73,10 +74,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s PATH PATH
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/props.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/props.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/props.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -27,6 +27,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("props",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -88,10 +89,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s [OPTIONS] [PATH]
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/put.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/put.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/put.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -26,6 +26,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("put", "write",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -84,10 +85,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s OPTIONS PATH
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/query.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/query.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/query.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -29,6 +29,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("query",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -89,10 +90,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s OPTIONS PATH
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/quota.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/quota.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/quota.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -27,6 +27,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("quota",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -81,10 +82,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s [PATH]
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/rm.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/rm.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/rm.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -27,6 +27,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("rm",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -68,10 +69,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s PATH *[PATH]
 PATH is a relative or absolute path.

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/share.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/share.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/share.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -31,6 +31,7 @@
         super(Command, self).__init__()
         self.cmds = ("share",)
         self.subshell = None
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/sync.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/sync.py	2013-05-18 01:41:40 UTC (rev 11218)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/browser/commands/sync.py	2013-05-18 02:04:35 UTC (rev 11219)
@@ -28,6 +28,7 @@
     def __init__(self):
         super(Command, self).__init__()
         self.cmds = ("sync",)
+        self.do_wd_complete = True
 
 
     def execute(self, cmdname, options):
@@ -76,10 +77,6 @@
         return True
 
 
-    def complete(self, text):
-        return self.shell.wdcomplete(text)
-
-
     def usage(self, name):
         return """Usage: %s [OPTIONS] [PATH]
 PATH is a relative or absolute path.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130517/bf6071d3/attachment-0001.html>


More information about the calendarserver-changes mailing list