Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'python/src/tcf/shell.py')
-rw-r--r--python/src/tcf/shell.py43
1 files changed, 29 insertions, 14 deletions
diff --git a/python/src/tcf/shell.py b/python/src/tcf/shell.py
index ea7f1f177..d868b60ed 100644
--- a/python/src/tcf/shell.py
+++ b/python/src/tcf/shell.py
@@ -1,5 +1,5 @@
-# *******************************************************************************
-# * Copyright (c) 2011 Wind River Systems, Inc. and others.
+# *****************************************************************************
+# * Copyright (c) 2011, 2013 Wind River Systems, Inc. and others.
# * All rights reserved. This program and the accompanying materials
# * are made available under the terms of the Eclipse Public License v1.0
# * which accompanies this distribution, and is available at
@@ -7,18 +7,19 @@
# *
# * Contributors:
# * Wind River Systems - initial API and implementation
-# *******************************************************************************
+# *****************************************************************************
"""
-Simple interactive shell for TCF. This is basically a Python interpreter with a few
-TCF extensions.
+Simple interactive shell for TCF. This is basically a Python interpreter with
+a few TCF extensions.
Usage:
python -m tcf.shell
Commands:
peers - Print discovered peers
- connect(params) - Connect to TCF peer, params = "<protocol>:<host>:<port>"
+ connect(params) - Connect to TCF peer, params =
+ "<protocol>:<host>:<port>"
cmd.<service>.<command<(args)
- Send command to remote service and return result
disconnect - Disconnect from peer
@@ -29,27 +30,37 @@ Commands:
- Stop recording for service or for all services
"""
-import code, sys, os
+import code
+import os
+import sys
+
+
try:
import tcf
except ImportError:
- # add current dir to path
- sys.path.insert(0, os.getcwd())
+ # add parent dir to path
+ sys.path.insert(0, os.path.dirname(os.getcwd()))
import tcf
+
from tcf.util import sync, event
from tcf import protocol, channel
+
class print_peers:
"Print list of discovered peers"
def __call__(self):
return tcf.peers()
+
def __repr__(self):
peers = tcf.peers()
- return '\n'.join(map(lambda p: "%s, %s" % (p.getID(), p.getName()), peers.values()))
+ return '\n'.join(map(lambda p: "%s, %s" % (p.getID(), p.getName()),
+ peers.values()))
-class Shell(code.InteractiveConsole, protocol.ChannelOpenListener, channel.ChannelListener):
+
+class Shell(code.InteractiveConsole, protocol.ChannelOpenListener,
+ channel.ChannelListener):
def __init__(self):
- locals = {
+ locals = { # @ReservedAssignment
"connect" : tcf.connect,
"peers" : print_peers()
}
@@ -57,10 +68,11 @@ class Shell(code.InteractiveConsole, protocol.ChannelOpenListener, channel.Chann
protocol.startDiscovery()
protocol.invokeAndWait(protocol.addChannelOpenListener, self)
code.InteractiveConsole.__init__(self, locals)
+
def interact(self, banner=None):
try:
try:
- ps1 = sys.ps1 #@UndefinedVariable
+ ps1 = sys.ps1 # @UndefinedVariable
except AttributeError:
ps1 = None
sys.ps1 = "tcf> "
@@ -73,6 +85,7 @@ class Shell(code.InteractiveConsole, protocol.ChannelOpenListener, channel.Chann
protocol.invokeLater(protocol.removeChannelOpenListener, self)
protocol.shutdownDiscovery()
protocol.getEventQueue().shutdown()
+
def onChannelOpen(self, channel):
wrapper = sync.DispatchWrapper(channel)
self.locals["channel"] = wrapper
@@ -81,6 +94,7 @@ class Shell(code.InteractiveConsole, protocol.ChannelOpenListener, channel.Chann
self.locals["events"] = event.EventRecorder(channel)
protocol.invokeAndWait(protocol.removeChannelOpenListener, self)
wrapper.addChannelListener(self)
+
def onChannelClosed(self, error):
del self.locals["channel"]
del self.locals["cmd"]
@@ -88,10 +102,11 @@ class Shell(code.InteractiveConsole, protocol.ChannelOpenListener, channel.Chann
del self.locals["events"]
protocol.addChannelOpenListener(self)
+
def interact():
try:
# enable commandline editing if available
- import readline #@UnusedImport
+ import readline # @UnusedImport
except ImportError:
pass
shell = Shell()

Back to the top