mirror of
https://github.com/Comfy-Org/ComfyUI-Manager.git
synced 2026-03-23 18:03:29 +08:00
Merge 03ecc06e96 into c94236a614
This commit is contained in:
commit
7299e12205
@ -357,6 +357,8 @@ def normalize_channel(channel):
|
|||||||
return channel
|
return channel
|
||||||
elif channel.startswith('http://') and get_config()['http_channel_enabled'] == True:
|
elif channel.startswith('http://') and get_config()['http_channel_enabled'] == True:
|
||||||
return channel
|
return channel
|
||||||
|
elif channel.startswith('\\\\') or os.path.isabs(channel):
|
||||||
|
return channel
|
||||||
|
|
||||||
tmp_dict = get_channel_dict()
|
tmp_dict = get_channel_dict()
|
||||||
channel_url = tmp_dict.get(channel)
|
channel_url = tmp_dict.get(channel)
|
||||||
@ -850,6 +852,8 @@ class UnifiedManager:
|
|||||||
return {}
|
return {}
|
||||||
|
|
||||||
# validate channel - only the channel set by the user is allowed.
|
# validate channel - only the channel set by the user is allowed.
|
||||||
|
if channel_url and (channel_url.startswith('\\\\') or os.path.isabs(channel_url)):
|
||||||
|
valid_channels.add(channel_url)
|
||||||
if channel_url not in valid_channels:
|
if channel_url not in valid_channels:
|
||||||
logging.error(f'[ComfyUI-Manager] An invalid channel was used: {channel_url}')
|
logging.error(f'[ComfyUI-Manager] An invalid channel was used: {channel_url}')
|
||||||
raise InvalidChannel(channel_url)
|
raise InvalidChannel(channel_url)
|
||||||
@ -858,8 +862,12 @@ class UnifiedManager:
|
|||||||
for x in json_obj['custom_nodes']:
|
for x in json_obj['custom_nodes']:
|
||||||
try:
|
try:
|
||||||
for y in x['files']:
|
for y in x['files']:
|
||||||
if 'github.com' in y and not (y.endswith('.py') or y.endswith('.js')):
|
is_github_repo = 'github.com' in y and not (y.endswith('.py') or y.endswith('.js'))
|
||||||
repo_name = y.split('/')[-1]
|
is_local_source = y.startswith('\\\\') or os.path.isabs(y)
|
||||||
|
if is_github_repo or is_local_source:
|
||||||
|
repo_name = y.replace('\\', '/').rstrip('/').split('/')[-1]
|
||||||
|
if repo_name == '':
|
||||||
|
repo_name = x.get('title', x.get('id', 'local_node'))
|
||||||
res[repo_name] = (x, False)
|
res[repo_name] = (x, False)
|
||||||
|
|
||||||
if 'id' in x:
|
if 'id' in x:
|
||||||
@ -905,7 +913,7 @@ class UnifiedManager:
|
|||||||
added_cnr.add(cnr['id'])
|
added_cnr.add(cnr['id'])
|
||||||
node_id = v['id']
|
node_id = v['id']
|
||||||
else:
|
else:
|
||||||
node_id = v['files'][0].split('/')[-1]
|
node_id = v['files'][0].replace('\\', '/').rstrip('/').split('/')[-1]
|
||||||
v['repository'] = v['files'][0]
|
v['repository'] = v['files'][0]
|
||||||
res[node_id] = v
|
res[node_id] = v
|
||||||
elif len(v['files']) > 1:
|
elif len(v['files']) > 1:
|
||||||
@ -1519,7 +1527,24 @@ class UnifiedManager:
|
|||||||
self.unified_disable(node_id, False)
|
self.unified_disable(node_id, False)
|
||||||
|
|
||||||
to_path = os.path.abspath(os.path.join(get_default_custom_nodes_path(), node_id))
|
to_path = os.path.abspath(os.path.join(get_default_custom_nodes_path(), node_id))
|
||||||
res = self.repo_install(repo_url, to_path, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall)
|
is_local_source = repo_url.startswith('\\\\') or os.path.isabs(repo_url)
|
||||||
|
if version_spec == 'unknown' and is_local_source:
|
||||||
|
res = ManagedResult('install-git')
|
||||||
|
res.append(repo_url)
|
||||||
|
if os.path.exists(to_path):
|
||||||
|
return res.fail(f"Install path already exists: {to_path}")
|
||||||
|
try:
|
||||||
|
if os.path.isdir(repo_url):
|
||||||
|
shutil.copytree(repo_url, to_path)
|
||||||
|
elif os.path.isfile(repo_url):
|
||||||
|
os.makedirs(os.path.dirname(to_path), exist_ok=True)
|
||||||
|
shutil.copy2(repo_url, to_path)
|
||||||
|
else:
|
||||||
|
return res.fail(f"Local source not found: {repo_url}")
|
||||||
|
except Exception as e:
|
||||||
|
return res.fail(f"Failed to copy local source: {repo_url} / {e}")
|
||||||
|
else:
|
||||||
|
res = self.repo_install(repo_url, to_path, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall)
|
||||||
if res.result:
|
if res.result:
|
||||||
if version_spec == 'unknown':
|
if version_spec == 'unknown':
|
||||||
self.unknown_active_nodes[node_id] = repo_url, to_path
|
self.unknown_active_nodes[node_id] = repo_url, to_path
|
||||||
@ -3017,6 +3042,19 @@ async def get_unified_total_nodes(channel, mode, regsitry_cache_mode='cache'):
|
|||||||
|
|
||||||
v['update-state'] = 'true' if updatable else 'false'
|
v['update-state'] = 'true' if updatable else 'false'
|
||||||
else:
|
else:
|
||||||
|
manifest_version = v.get('version')
|
||||||
|
if manifest_version:
|
||||||
|
try:
|
||||||
|
v['display_version'] = str(manager_util.StrictVersion(manifest_version))
|
||||||
|
except Exception:
|
||||||
|
v['display_version'] = manifest_version
|
||||||
|
else:
|
||||||
|
reference = v.get('reference')
|
||||||
|
if reference and (reference.startswith('\\\\') or os.path.isabs(reference)):
|
||||||
|
info = cnr_utils.read_cnr_info(reference)
|
||||||
|
if info and info.get('version'):
|
||||||
|
v['display_version'] = str(manager_util.StrictVersion(info['version']))
|
||||||
|
|
||||||
# unknown version
|
# unknown version
|
||||||
v['version'] = 'unknown'
|
v['version'] = 'unknown'
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user