mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
86 lines
2.4 KiB
Python
86 lines
2.4 KiB
Python
#! python3
|
|
|
|
"""
|
|
Fusion tools for setting environment
|
|
"""
|
|
|
|
import os
|
|
import shutil
|
|
|
|
from openpype.api import Logger
|
|
import openpype.hosts.fusion
|
|
|
|
log = Logger().get_logger(__name__)
|
|
|
|
|
|
def _sync_utility_scripts(env=None):
|
|
""" Synchronizing basic utlility scripts for resolve.
|
|
|
|
To be able to run scripts from inside `Fusion/Workspace/Scripts` menu
|
|
all scripts has to be accessible from defined folder.
|
|
"""
|
|
if not env:
|
|
env = os.environ
|
|
|
|
# initiate inputs
|
|
scripts = {}
|
|
us_env = env.get("FUSION_UTILITY_SCRIPTS_SOURCE_DIR")
|
|
us_dir = env.get("FUSION_UTILITY_SCRIPTS_DIR", "")
|
|
us_paths = [os.path.join(
|
|
os.path.dirname(os.path.abspath(openpype.hosts.fusion.__file__)),
|
|
"utility_scripts"
|
|
)]
|
|
|
|
# collect script dirs
|
|
if us_env:
|
|
log.info(f"Utility Scripts Env: `{us_env}`")
|
|
us_paths = us_env.split(
|
|
os.pathsep) + us_paths
|
|
|
|
# collect scripts from dirs
|
|
for path in us_paths:
|
|
scripts.update({path: os.listdir(path)})
|
|
|
|
log.info(f"Utility Scripts Dir: `{us_paths}`")
|
|
log.info(f"Utility Scripts: `{scripts}`")
|
|
|
|
# make sure no script file is in folder
|
|
if next((s for s in os.listdir(us_dir)), None):
|
|
for s in os.listdir(us_dir):
|
|
path = os.path.normpath(
|
|
os.path.join(us_dir, s))
|
|
log.info(f"Removing `{path}`...")
|
|
|
|
# remove file or directory if not in our folders
|
|
if not os.path.isdir(path):
|
|
os.remove(path)
|
|
else:
|
|
shutil.rmtree(path)
|
|
|
|
# copy scripts into Resolve's utility scripts dir
|
|
for d, sl in scripts.items():
|
|
# directory and scripts list
|
|
for s in sl:
|
|
# script in script list
|
|
src = os.path.normpath(os.path.join(d, s))
|
|
dst = os.path.normpath(os.path.join(us_dir, s))
|
|
|
|
log.info(f"Copying `{src}` to `{dst}`...")
|
|
|
|
# copy file or directory from our folders to fusion's folder
|
|
if not os.path.isdir(src):
|
|
shutil.copy2(src, dst)
|
|
else:
|
|
shutil.copytree(src, dst)
|
|
|
|
|
|
def setup(env=None):
|
|
""" Wrapper installer started from pype.hooks.fusion.FusionPrelaunch()
|
|
"""
|
|
if not env:
|
|
env = os.environ
|
|
|
|
# synchronize resolve utility scripts
|
|
_sync_utility_scripts(env)
|
|
|
|
log.info("Fusion Pype wrapper has been installed")
|