Skip to content

Commit c695c4a

Browse files
authored
Frontend Manager: avoid redundant gh calls for static versions (Comfy-Org#5152)
* Frontend Manager: avoid redundant gh calls for static versions * actually, removing old tmpdir isn't needed I tested - downloader code handles this case well already (also rmdir was wrong func anyway, needed shutil.rmtree if it had content) * add code comment
1 parent 0dbba9f commit c695c4a

1 file changed

Lines changed: 16 additions & 3 deletions

File tree

app/frontend_management.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,15 @@ def init_frontend_unsafe(cls, version_string: str, provider: Optional[FrontEndPr
151151
return cls.DEFAULT_FRONTEND_PATH
152152

153153
repo_owner, repo_name, version = cls.parse_version_string(version_string)
154+
155+
if version.startswith("v"):
156+
expected_path = str(Path(cls.CUSTOM_FRONTENDS_ROOT) / f"{repo_owner}_{repo_name}" / version.lstrip("v"))
157+
if os.path.exists(expected_path):
158+
logging.info(f"Using existing copy of specific frontend version tag: {repo_owner}/{repo_name}@{version}")
159+
return expected_path
160+
161+
logging.info(f"Initializing frontend: {repo_owner}/{repo_name}@{version}, requesting version details from GitHub...")
162+
154163
provider = provider or FrontEndProvider(repo_owner, repo_name)
155164
release = provider.get_release(version)
156165

@@ -159,16 +168,20 @@ def init_frontend_unsafe(cls, version_string: str, provider: Optional[FrontEndPr
159168
Path(cls.CUSTOM_FRONTENDS_ROOT) / provider.folder_name / semantic_version
160169
)
161170
if not os.path.exists(web_root):
171+
# Use tmp path until complete to avoid path exists check passing from interrupted downloads
172+
tmp_path = web_root + ".tmp"
162173
try:
163-
os.makedirs(web_root, exist_ok=True)
174+
os.makedirs(tmp_path, exist_ok=True)
164175
logging.info(
165176
"Downloading frontend(%s) version(%s) to (%s)",
166177
provider.folder_name,
167178
semantic_version,
168-
web_root,
179+
tmp_path,
169180
)
170181
logging.debug(release)
171-
download_release_asset_zip(release, destination_path=web_root)
182+
download_release_asset_zip(release, destination_path=tmp_path)
183+
if os.listdir(tmp_path):
184+
os.rename(tmp_path, web_root)
172185
finally:
173186
# Clean up the directory if it is empty, i.e. the download failed
174187
if not os.listdir(web_root):

0 commit comments

Comments
 (0)