Source code for example_template_hook

# Copyright (c) 2018 Shotgun Software Inc.
#
# CONFIDENTIAL AND PROPRIETARY
#
# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit
# Source Code License included in this distribution package. See LICENSE.
# By accessing, using, copying or modifying this work you indicate your
# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights
# not expressly granted therein are reserved by Shotgun Software Inc.

"""
This hook is a simple example to illustrate how template settings in an app
can be evaluated at runtime based on complex conditions.

If you have an app which has a template parameter, you would typically use a setting
which points to one of your templates. So in the environment config, you would have::

    template_snapshot: maya_shot_publish

However if you want more complex behavior, it is possible to specify that a hook
should be used to evaluate the setting at runtime rather than just set it.
For example::

    template_snapshot: "hook:example_template_hook:maya_shot_publish"

This setting would look for a core hook named ``example_template_hook`` and execute it.
See below for an example implementation and parameter descriptions.
"""

from tank import Hook


[docs]class ExampleTemplateHook(Hook):
[docs] def execute(self, setting, bundle_obj, extra_params, **kwargs): """ Example pass-through implementation. One option is expected in ``extra_params`` and it will be returned. So the following two things will evaluate to the same thing: > template_snapshot: maya_shot_publish > template_snapshot: hook:example_template_hook:maya_shot_publish :param setting: The name of the setting for which we are evaluating In our example above, it would be template_snapshot. :param bundle_obj: The app, engine or framework object that the setting is associated with. :param extra_params: List of options passed from the setting. If the settings string is "hook:hook_name:foo:bar", extra_params would be ['foo', 'bar'] returns: needs to return the name of a template, as a string. """ template_name = extra_params[0] return template_name