Browse Source

Re-added file that was necessary

Yentl Van Tendeloo 9 years ago
parent
commit
5a165d8855
1 changed files with 78 additions and 0 deletions
  1. 78 0
      prompt.py

+ 78 - 0
prompt.py

@@ -0,0 +1,78 @@
+import urllib
+import urllib2
+import threading
+import subprocess
+import os
+
+def local_print(string):
+    print("\033[92m%s\033[0m" % string)
+
+def remote_print(string):
+    print("\033[94m%s\033[0m" % string)
+
+def execute(scriptname, parameters=[], wait=False):
+    if os.name == "nt":
+        command = ["%s.bat" % scriptname] + parameters
+    elif os.name == "posix":
+        command = ["./%s.sh" % scriptname] + parameters
+    else:
+        raise Exception("Unknown OS: " + str(os.name))
+
+    if wait:
+        return subprocess.call(command, shell=False)
+        return subprocess.call(command, shell=False, stdout=open('/tmp/output', 'w'), stderr=open('/tmp/output', 'w'))
+    else:
+        return subprocess.Popen(command, shell=False, stdout=open('/tmp/output', 'w'))
+
+local_print("Welcome to the local shell!")
+local_print("Please specify Modelverse location (default: localhost:8001)")
+
+location = raw_input()
+if location == "":
+    address = "localhost"
+    port = 8001
+else:
+    address, port = location.strip().split(":")
+
+local_print("Username (default: test)")
+username = raw_input()
+if username == "":
+    username = "test"
+else:
+    username = username.strip()
+
+local_print("Switching context to Modelverse: all data is piped.")
+local_print("To quit: execute command 'quit'")
+
+def print_output():
+    while 1:
+        output = urllib2.urlopen(urllib2.Request("http://%s:%s/" % (address, port), urllib.urlencode({"op": "get_output", "username": username}))).read()
+        l, r = output.split("&", 1)
+        if "value" in l:
+            output = l
+        else:
+            output = r
+        _, output = output.split("=", 1)
+        remote_print("%s" % str(output))
+
+thrd = threading.Thread(target=print_output)
+thrd.daemon = True
+thrd.start()
+
+while 1:
+    command = raw_input()
+    if command == "quit":
+        local_print("Received quit: breaking connection to Modelverse immediately!")
+        break
+    try:
+        # Could be a number
+        _ = float(command)
+        command = str(command)
+        local_print("Interpreting value as a number")
+    except:
+        if len(command) > 0 and command[0] == "\\":
+            command = '{"value": "%s"}' % command[1:]
+        else:
+            command = '"%s"' % command
+        local_print("Got command string: " + str(command))
+    urllib2.urlopen(urllib2.Request("http://%s:%s/" % (address, port), urllib.urlencode({"op": "set_input", "element_type": "V", "value": command, "username": username}))).read()