From 8b3271adb135a60da082a281f8d6f36100684875 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 29 Jul 2019 09:20:38 +0200 Subject: [PATCH] feat(nuke): adding atom_server.py for better nuke development --- setup/nuke/nuke_path/atom_server.py | 54 +++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 setup/nuke/nuke_path/atom_server.py diff --git a/setup/nuke/nuke_path/atom_server.py b/setup/nuke/nuke_path/atom_server.py new file mode 100644 index 0000000000..1742c290c1 --- /dev/null +++ b/setup/nuke/nuke_path/atom_server.py @@ -0,0 +1,54 @@ +''' + Simple socket server using threads +''' + +import socket +import sys +import threading +import StringIO +import contextlib + +import nuke + +HOST = '' +PORT = 8888 + + +@contextlib.contextmanager +def stdoutIO(stdout=None): + old = sys.stdout + if stdout is None: + stdout = StringIO.StringIO() + sys.stdout = stdout + yield stdout + sys.stdout = old + + +def _exec(data): + with stdoutIO() as s: + exec(data) + return s.getvalue() + + +def server_start(): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.bind((HOST, PORT)) + s.listen(5) + + while 1: + client, address = s.accept() + try: + data = client.recv(4096) + if data: + result = nuke.executeInMainThreadWithResult(_exec, args=(data)) + client.send(str(result)) + except SystemExit: + result = self.encode('SERVER: Shutting down...') + client.send(str(result)) + raise + finally: + client.close() + +t = threading.Thread(None, server_start) +t.setDaemon(True) +t.start()