Skip to content

collect_addons

Collect AYON addons.

CollectAddons

Bases: ContextPlugin

Collect AYON addons.

Source code in client/ayon_core/plugins/publish/collect_addons.py
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
class CollectAddons(pyblish.api.ContextPlugin):
    """Collect AYON addons."""

    order = pyblish.api.CollectorOrder - 0.5
    label = "AYON Addons"

    def process(self, context):
        manager = AddonsManager()
        context.data["ayonAddonsManager"] = manager
        context.data["ayonAddons"] = manager.addons_by_name

        items = []
        title_name = "Name"
        title_version = "Version"
        longest_name = len(title_name)
        longest_version = len(title_version)
        for addon in sorted(manager.addons, key=lambda x: x.name):
            addon_name = addon.name
            addon_version = addon.version or "N/A"
            longest_name = max(longest_name, len(addon_name))
            longest_version = max(longest_version, len(addon_version))
            items.append((addon_name, addon_version))

        template = f"{{:<{longest_name}}} | {{:<{longest_version}}}"
        title = template.format(title_name, title_version)
        bundle_name = os.getenv("AYON_BUNDLE_NAME")
        if is_dev_mode_enabled():
            settings_variant = "dev"
        else:
            settings_variant = get_settings_variant()

        server_version = ayon_api.get_server_version()

        ayon_info = get_ayon_info()
        launcher_version = ayon_info["ayon_launcher_version"]
        launcher_type = ayon_info["version_type"]
        lines = [
            "Basic AYON information:",
            f"AYON server: {server_version}",
            f"Bundle: {bundle_name} ({settings_variant})",
            f"AYON launcher: {launcher_version} ({launcher_type})",
            "Addons:",
            len(title) * "-",
            title,
            len(title) * "-",
        ]
        lines.extend(
            template.format(addon_name, addon_version)
            for addon_name, addon_version in items
        )
        self.log.debug("\n".join(lines))