Files
nathannlu-ComfyUI-Cloud/python/paths.py
T

52 lines
1.6 KiB
Python

import os
def _search_dependency_paths(root_dir, name):
"""
This function returns the full path of a file/folder
when given the name
- search_dir is a filepath
- names is a list of filenames or folder names
"""
for dirpath, dirnames, filenames in os.walk(root_dir):
if name in filenames or name in dirnames:
relative_path = os.path.relpath(dirpath, root_dir)
return os.path.join(relative_path, name)
raise Exception(f"Required {name} was not found in {root_dir} folder. Make sure you do not have extra_paths.yaml enabled")
def _search_dependency_paths_from_list(root_dir, names):
results = []
for name in names:
try:
result = _search_dependency_paths(root_dir, name)
results.append(result)
except Exception as e:
raise
return results
def to_linux_path(path):
return path.replace("\\", "/")
def build_paths(paths_to_upload, dep_lists, workflow_id=""):
"""
Handles finding, building, verifying path
"""
paths = []
for dirname, base_path in paths_to_upload.items():
to_upload = _search_dependency_paths_from_list(base_path, dep_lists[dirname])
for path in to_upload:
local_path = os.path.join(base_path, path)
# normpath converts the path to system specific path
norm_local_path = os.path.normpath(local_path)
local_path = os.path.join(base_path, dirname, path)
remote_path = to_linux_path(os.path.normpath(os.path.join("vol", workflow_id, "comfyui", dirname, path)))
paths.append((norm_local_path, remote_path))
return paths