[CalendarServer-changes] [8335] CalendarServer/trunk/calendarserver/tools/shell.py
source_changes at macosforge.org
source_changes at macosforge.org
Fri Nov 18 14:34:38 PST 2011
Revision: 8335
http://trac.macosforge.org/projects/calendarserver/changeset/8335
Author: wsanchez at apple.com
Date: 2011-11-18 14:34:38 -0800 (Fri, 18 Nov 2011)
Log Message:
-----------
Add emulate command
Modified Paths:
--------------
CalendarServer/trunk/calendarserver/tools/shell.py
Modified: CalendarServer/trunk/calendarserver/tools/shell.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/shell.py 2011-11-18 22:21:38 UTC (rev 8334)
+++ CalendarServer/trunk/calendarserver/tools/shell.py 2011-11-18 22:34:38 UTC (rev 8335)
@@ -115,8 +115,13 @@
os.write(self.terminalFD, "\r\x1bc\r")
-class UnknownArguments (Exception):
+class UsageError (Exception):
"""
+ Usage error.
+ """
+
+class UnknownArguments (UsageError):
+ """
Unknown arguments.
"""
def __init__(self, arguments):
@@ -125,6 +130,7 @@
EMULATE_EMACS = object()
+EMULATE_VI = object()
class ShellProtocol(ReceiveLineProtocol):
"""
@@ -153,7 +159,7 @@
self.keyHandlers['\x1c'] = self.handle_QUIT # Control-\
self.keyHandlers['\x0c'] = self.handle_FF # Control-L
- if self.emulate is EMULATE_EMACS:
+ if self.emulate == EMULATE_EMACS:
# EMACS key bindinds
self.keyHandlers['\x10'] = self.handle_UP # Control-P
self.keyHandlers['\x0e'] = self.handle_DOWN # Control-N
@@ -178,7 +184,7 @@
def handle_EOF(self):
if self.lineBuffer:
- if self.emulate is EMULATE_EMACS:
+ if self.emulate == EMULATE_EMACS:
self.handle_DELETE()
else:
self.terminal.write('\a')
@@ -222,8 +228,8 @@
m = getattr(self, "cmd_%s" % (cmd,), None)
if m:
- def handleUnknownArguments(f):
- f.trap(UnknownArguments)
+ def handleUsageError(f):
+ f.trap(UsageError)
self.terminal.write("%s\n" % (f.value,))
def handleException(f):
@@ -247,7 +253,7 @@
else:
# Add time to test callbacks
self.service.reactor.callLater(4, d.callback, None)
- d.addErrback(handleUnknownArguments)
+ d.addErrback(handleUsageError)
d.addErrback(handleException)
d.addCallback(next)
else:
@@ -335,6 +341,31 @@
for info in sorted(result):
self.terminal.write(" %s - %s\n" % (info))
+ def cmd_emulate(self, tokens):
+ """
+ Emulate editor behavior.
+ The only correct argument is "emacs".
+
+ usage: emulate editor
+ """
+ if not tokens:
+ raise UsageError("Editor not specified.")
+
+ editor = tokens.pop(0).lower()
+
+ if tokens:
+ raise UnknownArguments(tokens)
+
+ if editor == "emacs":
+ self.terminal.write("Emulating EMACS.")
+ self.emulate = EMULATE_EMACS
+ elif editor == "vi":
+ self.terminal.write("Seriously?!?!?")
+ self.emulate = EMULATE_VI
+ else:
+ raise UsageError("Unknown editor: %s" % (editor,))
+ self.terminal.nextLine()
+
def cmd_pwd(self, tokens):
"""
Print working folder.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20111118/a511a8fc/attachment.html>
More information about the calendarserver-changes
mailing list