mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
* ApplicationManager can have more granular way how applications are launched * executable is optional to be able create ApplicationLaunchContext * launch context can run prelaunch hooks without launching application * 'get_app_environments_for_context' is using launch context to prepare environments * added 'launch_type' as one of filtering options for LaunchHook * added 'local' launch type filter to existing launch hooks * define 'automated' launch type in remote publish function * modified publish and extract environments cli commands * launch types are only for local by default * fix import * fix launch types of global host data * change order or kwargs * change unreal filter attribute * use set instead of list * removed '__init__' from celaction hooks * use 'CELACTION_ROOT_DIR' in pre setup * use full import from applications
29 lines
1.2 KiB
Python
29 lines
1.2 KiB
Python
import subprocess
|
|
from openpype.lib.applications import PreLaunchHook, LaunchTypes
|
|
|
|
|
|
class LaunchFoundryAppsWindows(PreLaunchHook):
|
|
"""Foundry applications have specific way how to launch them.
|
|
|
|
Nuke is executed "like" python process so it is required to pass
|
|
`CREATE_NEW_CONSOLE` flag on windows to trigger creation of new console.
|
|
At the same time the newly created console won't create its own stdout
|
|
and stderr handlers so they should not be redirected to DEVNULL.
|
|
"""
|
|
|
|
# Should be as last hook because must change launch arguments to string
|
|
order = 1000
|
|
app_groups = {"nuke", "nukeassist", "nukex", "hiero", "nukestudio"}
|
|
platforms = {"windows"}
|
|
launch_types = {LaunchTypes.local}
|
|
|
|
def execute(self):
|
|
# Change `creationflags` to CREATE_NEW_CONSOLE
|
|
# - on Windows nuke will create new window using its console
|
|
# Set `stdout` and `stderr` to None so new created console does not
|
|
# have redirected output to DEVNULL in build
|
|
self.launch_context.kwargs.update({
|
|
"creationflags": subprocess.CREATE_NEW_CONSOLE,
|
|
"stdout": None,
|
|
"stderr": None
|
|
})
|