mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 08:24:53 +01:00
94 lines
2.8 KiB
Python
94 lines
2.8 KiB
Python
"""
|
|
Requires:
|
|
context -> anatomy
|
|
context -> anatomyData
|
|
|
|
Provides:
|
|
instance -> publishDir
|
|
instance -> resourcesDir
|
|
"""
|
|
|
|
import os
|
|
import copy
|
|
|
|
import pyblish.api
|
|
from avalon import api
|
|
|
|
|
|
class CollectResourcesPath(pyblish.api.InstancePlugin):
|
|
"""Generate directory path where the files and resources will be stored"""
|
|
|
|
label = "Collect Resources Path"
|
|
order = pyblish.api.CollectorOrder + 0.495
|
|
families = ["workfile",
|
|
"pointcache",
|
|
"camera",
|
|
"animation",
|
|
"model",
|
|
"mayaAscii",
|
|
"setdress",
|
|
"layout",
|
|
"ass",
|
|
"vdbcache",
|
|
"scene",
|
|
"vrayproxy",
|
|
"render",
|
|
"prerender",
|
|
"imagesequence",
|
|
"rendersetup",
|
|
"rig",
|
|
"plate",
|
|
"look",
|
|
"yetiRig",
|
|
"yeticache",
|
|
"nukenodes",
|
|
"gizmo",
|
|
"source",
|
|
"matchmove",
|
|
"image",
|
|
"source",
|
|
"assembly",
|
|
"fbx",
|
|
"textures",
|
|
"action",
|
|
"background",
|
|
"effect"
|
|
]
|
|
|
|
def process(self, instance):
|
|
anatomy = instance.context.data["anatomy"]
|
|
|
|
template_data = copy.deepcopy(instance.data["anatomyData"])
|
|
|
|
# This is for cases of Deprecated anatomy without `folder`
|
|
# TODO remove when all clients have solved this issue
|
|
template_data.update({
|
|
"frame": "FRAME_TEMP",
|
|
"representation": "TEMP"
|
|
})
|
|
|
|
anatomy_filled = anatomy.format(template_data)
|
|
|
|
if "folder" in anatomy.templates["publish"]:
|
|
publish_folder = anatomy_filled["publish"]["folder"]
|
|
else:
|
|
# solve deprecated situation when `folder` key is not underneath
|
|
# `publish` anatomy
|
|
project_name = api.Session["AVALON_PROJECT"]
|
|
self.log.warning((
|
|
"Deprecation warning: Anatomy does not have set `folder`"
|
|
" key underneath `publish` (in global of for project `{}`)."
|
|
).format(project_name))
|
|
|
|
file_path = anatomy_filled["publish"]["path"]
|
|
# Directory
|
|
publish_folder = os.path.dirname(file_path)
|
|
|
|
publish_folder = os.path.normpath(publish_folder)
|
|
resources_folder = os.path.join(publish_folder, "resources")
|
|
|
|
instance.data["publishDir"] = publish_folder
|
|
instance.data["resourcesDir"] = resources_folder
|
|
|
|
self.log.debug("publishDir: \"{}\"".format(publish_folder))
|
|
self.log.debug("resourcesDir: \"{}\"".format(resources_folder))
|