From 87d30338c4c0ebafd88bc9fd83a6f59b2ff74577 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 09:55:46 +0100 Subject: [PATCH] added harmony prelaunch --- pype/hooks/harmony/pre_launch_args.py | 53 +++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 pype/hooks/harmony/pre_launch_args.py diff --git a/pype/hooks/harmony/pre_launch_args.py b/pype/hooks/harmony/pre_launch_args.py new file mode 100644 index 0000000000..7047e67616 --- /dev/null +++ b/pype/hooks/harmony/pre_launch_args.py @@ -0,0 +1,53 @@ +import os +import platform + +from pype.lib import PreLaunchHook + + +class HarmonyPrelaunchHook(PreLaunchHook): + """Launch arguments preparation. + + Hook add python executable and execute python script of harmony + implementation before harmony executable. + """ + hosts = ["harmony"] + + def execute(self): + # Pop tvpaint executable + photoshop_executable = self.launch_context.launch_args.pop(0) + + # Pop rest of launch arguments - There should not be other arguments! + remainders = [] + while self.launch_context.launch_args: + remainders.append(self.launch_context.launch_args.pop(0)) + + python_launch_args = [ + self.python_executable(), + "-c", + ( + "^\"import avalon.harmony;" + "avalon.harmony.launch(\"{}\")^\"\"" + ).format(photoshop_executable) + ] + if platform.system().lower() != "windows": + new_launch_args = python_launch_args + else: + new_launch_args = [ + "cmd.exe", + "/k", + "\"{}\"".format(" ".join(python_launch_args)) + ] + + # Append as whole list as these areguments should not be separated + self.launch_context.launch_args.append(new_launch_args) + + if remainders: + self.log.warning(( + "There are unexpected launch arguments in Harmony launch. {}" + ).format(str(remainders))) + self.launch_context.launch_args.extend(remainders) + + def python_executable(self): + """Should lead to python executable.""" + # TODO change in Pype 3 + return os.environ["PYPE_PYTHON_EXE"]