Merge pull request #64 from Minkiu/feature/add_create_ayon_rez_adons

Use new package structure
This commit is contained in:
Jakub Trllo 2024-02-14 18:48:42 +01:00 committed by GitHub
commit 7c9d4f7439
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 29 additions and 26 deletions

View file

@ -5,4 +5,7 @@ version = "0.2.1-dev.1"
client_dir = "ayon_core"
plugin_for = ["ayon_server"]
ayon_version = ">=1.0.3,<2.0.0"
requires = [
"~ayon_server-1.0.3+<2.0.0",
]

View file

@ -92,8 +92,9 @@ class ApplicationsAddon(BaseServerAddon):
settings_model = ApplicationsAddonSettings
async def get_default_settings(self):
applications_path = os.path.join(self.addon_dir, "applications.json")
tools_path = os.path.join(self.addon_dir, "tools.json")
server_dir = os.path.join(self.addon_dir, "server")
applications_path = os.path.join(server_dir, "applications.json")
tools_path = os.path.join(server_dir, "tools.json")
default_values = copy.deepcopy(DEFAULT_VALUES)
with open(applications_path, "r") as stream:
default_values.update(json.load(stream))

View file

@ -40,6 +40,11 @@ IGNORED_HOSTS = [
IGNORED_MODULES = []
PACKAGE_PY_TEMPLATE = """name = "{addon_name}"
version = "{addon_version}"
plugin_for = ["ayon_server"]
"""
class ZipFileLongPaths(zipfile.ZipFile):
"""Allows longer paths in zip files.
@ -144,18 +149,12 @@ def create_addon_zip(
output_dir: Path,
addon_name: str,
addon_version: str,
keep_source: bool
keep_source: bool,
):
zip_filepath = output_dir / f"{addon_name}-{addon_version}.zip"
addon_output_dir = output_dir / addon_name / addon_version
with ZipFileLongPaths(zip_filepath, "w", zipfile.ZIP_DEFLATED) as zipf:
zipf.writestr(
"manifest.json",
json.dumps({
"addon_name": addon_name,
"addon_version": addon_version
})
)
# Add client code content to zip
src_root = os.path.normpath(str(addon_output_dir.absolute()))
src_root_offset = len(src_root) + 1
@ -167,9 +166,10 @@ def create_addon_zip(
for filename in filenames:
src_path = os.path.join(root, filename)
if rel_root:
dst_path = os.path.join("addon", rel_root, filename)
dst_path = os.path.join(rel_root, filename)
else:
dst_path = os.path.join("addon", filename)
dst_path = filename
zipf.write(src_path, dst_path)
if not keep_source:
@ -180,9 +180,8 @@ def create_addon_package(
addon_dir: Path,
output_dir: Path,
create_zip: bool,
keep_source: bool
keep_source: bool,
):
server_dir = addon_dir / "server"
addon_version = get_addon_version(addon_dir)
addon_output_dir = output_dir / addon_dir.name / addon_version
@ -191,18 +190,18 @@ def create_addon_package(
addon_output_dir.mkdir(parents=True)
# Copy server content
src_root = os.path.normpath(str(server_dir.absolute()))
src_root_offset = len(src_root) + 1
for root, _, filenames in os.walk(str(server_dir)):
dst_root = addon_output_dir
if root != src_root:
rel_root = root[src_root_offset:]
dst_root = dst_root / rel_root
package_py = addon_output_dir / "package.py"
package_py_content = PACKAGE_PY_TEMPLATE.format(
addon_name=addon_dir.name, addon_version=addon_version
)
dst_root.mkdir(parents=True, exist_ok=True)
for filename in filenames:
src_path = os.path.join(root, filename)
shutil.copy(src_path, str(dst_root))
with open(package_py, "w+") as pkg_py:
pkg_py.write(package_py_content)
server_dir = addon_dir / "server"
shutil.copytree(
server_dir, addon_output_dir / "server", dirs_exist_ok=True
)
if create_zip:
create_addon_zip(