mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
Split add job helper (#45)
* Fix issue with engine not being available to download * Add version caches to ffmpeg downloader * Remove some test parameters * "releases" should be "release" in linux ffmpeg url * CPU was incorrectly reported as OS * Fix naming structure for FFMPEG downloads for linux * More linux ffmpeg work * Improved error handling * WIP * Consolidate platform reporting to not use platform directly * Fix missing folder name * Fix project output naming * Undo config.yaml commit * Add is_engine_available API call * Fix issue where subjobs would not find servers
This commit is contained in:
@@ -1,13 +1,12 @@
|
||||
import logging
|
||||
import os
|
||||
import platform
|
||||
import shutil
|
||||
|
||||
from src.engines.blender.blender_downloader import BlenderDownloader
|
||||
from src.engines.blender.blender_engine import Blender
|
||||
from src.engines.ffmpeg.ffmpeg_downloader import FFMPEGDownloader
|
||||
from src.engines.ffmpeg.ffmpeg_engine import FFMPEG
|
||||
from src.utilities.misc_helper import system_safe_path
|
||||
from src.utilities.misc_helper import system_safe_path, current_system_os, current_system_cpu
|
||||
|
||||
logger = logging.getLogger()
|
||||
|
||||
@@ -64,8 +63,8 @@ class EngineManager:
|
||||
for eng in cls.supported_engines():
|
||||
if eng.default_renderer_path():
|
||||
results.append({'engine': eng.name(), 'version': eng().version(),
|
||||
'system_os': cls.system_os(),
|
||||
'cpu': cls.system_cpu(),
|
||||
'system_os': current_system_os(),
|
||||
'cpu': current_system_cpu(),
|
||||
'path': eng.default_renderer_path(), 'type': 'system'})
|
||||
|
||||
return results
|
||||
@@ -76,8 +75,8 @@ class EngineManager:
|
||||
|
||||
@classmethod
|
||||
def newest_engine_version(cls, engine, system_os=None, cpu=None):
|
||||
system_os = system_os or cls.system_os()
|
||||
cpu = cpu or cls.system_cpu()
|
||||
system_os = system_os or current_system_os()
|
||||
cpu = cpu or current_system_cpu()
|
||||
|
||||
try:
|
||||
filtered = [x for x in cls.all_engines() if x['engine'] == engine and x['system_os'] == system_os and x['cpu'] == cpu]
|
||||
@@ -89,21 +88,13 @@ class EngineManager:
|
||||
|
||||
@classmethod
|
||||
def is_version_downloaded(cls, engine, version, system_os=None, cpu=None):
|
||||
system_os = system_os or cls.system_os()
|
||||
cpu = cpu or cls.system_cpu()
|
||||
system_os = system_os or current_system_os()
|
||||
cpu = cpu or current_system_cpu()
|
||||
|
||||
filtered = [x for x in cls.all_engines() if
|
||||
x['engine'] == engine and x['system_os'] == system_os and x['cpu'] == cpu and x['version'] == version]
|
||||
return filtered[0] if filtered else False
|
||||
|
||||
@staticmethod
|
||||
def system_os():
|
||||
return platform.system().lower().replace('darwin', 'macos')
|
||||
|
||||
@staticmethod
|
||||
def system_cpu():
|
||||
return platform.machine().lower().replace('amd64', 'x64')
|
||||
|
||||
@classmethod
|
||||
def version_is_available_to_download(cls, engine, version, system_os=None, cpu=None):
|
||||
try:
|
||||
@@ -158,10 +149,15 @@ class EngineManager:
|
||||
def update_all_engines(cls):
|
||||
logger.info(f"Checking for updates for render engines...")
|
||||
for engine, engine_downloader in cls.downloader_classes.items():
|
||||
latest_version = engine_downloader.find_most_recent_version().get('version')
|
||||
if latest_version and not cls.is_version_downloaded(engine, latest_version):
|
||||
logger.info(f"Downloading newest version of {engine} ({latest_version})")
|
||||
cls.download_engine(engine, latest_version)
|
||||
logger.debug(f"Checking for updates to {engine}")
|
||||
latest_version = engine_downloader.find_most_recent_version()
|
||||
if latest_version:
|
||||
logger.debug(f"Latest version of {engine} available: {latest_version.get('version')}")
|
||||
if not cls.is_version_downloaded(engine, latest_version.get('version')):
|
||||
logger.info(f"Downloading {engine} ({latest_version['version']})")
|
||||
cls.download_engine(engine=engine, version=latest_version['version'])
|
||||
else:
|
||||
logger.warning(f"Unable to get latest version for {engine}")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
@@ -169,3 +165,4 @@ if __name__ == '__main__':
|
||||
|
||||
# print(EngineManager.newest_engine_version('blender', 'macos', 'arm64'))
|
||||
EngineManager.delete_engine_download('blender', '3.2.1', 'macos', 'a')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user