Skip to content

Commit

Permalink
OP-2053 - added possibility to check installed extension version
Browse files Browse the repository at this point in the history
  • Loading branch information
kalisp committed Dec 9, 2021
1 parent 2a540cd commit 2673b58
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
class CollectCurrentFile(pyblish.api.ContextPlugin):
"""Inject the current working file into context"""

order = pyblish.api.CollectorOrder - 0.5
order = pyblish.api.CollectorOrder - 0.49
label = "Current File"
hosts = ["aftereffects"]

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import os
import re
import pyblish.api

from avalon import aftereffects


class CollectExtensionVersion(pyblish.api.ContextPlugin):
""" Pulls and compares version of installed extension.
It is recommended to use same extension as in provided Openpype code.
Please use Anastasiy’s Extension Manager or ZXPInstaller to update
extension in case of an error.
You can locate extension.zxp in your installed Openpype code in
`repos/avalon-core/avalon/aftereffects`
"""
# This technically should be a validator, but other collectors might be
# impacted with usage of obsolete extension, so collector that runs first
# was chosen
order = pyblish.api.CollectorOrder - 0.5
label = "Collect extension version"
hosts = ["aftereffects"]

optional = True
active = True

def process(self, context):
installed_version = aftereffects.stub().get_extension_version()

if not installed_version:
raise ValueError("Unknown version, probably old extension")

manifest_url = os.path.join(os.path.dirname(aftereffects.__file__),
"extension", "CSXS", "manifest.xml")

if not os.path.exists(manifest_url):
self.log.debug("Unable to locate extension manifest, not checking")
return

expected_version = None
with open(manifest_url) as fp:
content = fp.read()
found = re.findall(r'(ExtensionBundleVersion=")([0-9\.]+)(")',
content)
if found:
expected_version = found[0][1]

if expected_version != installed_version:
msg = "Expected version '{}' found '{}'\n".format(
expected_version, installed_version)
msg += "Please update your installed extension, it might not work "
msg += "properly."

raise ValueError(msg)

0 comments on commit 2673b58

Please sign in to comment.