mirror of
https://git.datalinker.icu/ltdrdata/ComfyUI-Manager
synced 2025-12-15 17:14:35 +08:00
enhance: cm-cli - fix, uninstall, update
- allows even if unregistered in DB enhance: cm-cli - install - allows install via git url
This commit is contained in:
parent
f0e402f86b
commit
191c68dc09
96
cm-cli.py
96
cm-cli.py
@ -250,7 +250,7 @@ process_args()
|
|||||||
custom_node_map = load_custom_nodes()
|
custom_node_map = load_custom_nodes()
|
||||||
|
|
||||||
|
|
||||||
def lookup_node_path(node_name):
|
def lookup_node_path(node_name, robust=False):
|
||||||
# Currently, the node_name is used directly as the node_path, but in the future, I plan to allow nicknames.
|
# Currently, the node_name is used directly as the node_path, but in the future, I plan to allow nicknames.
|
||||||
|
|
||||||
if '..' in node_name:
|
if '..' in node_name:
|
||||||
@ -260,25 +260,36 @@ def lookup_node_path(node_name):
|
|||||||
if node_name in custom_node_map:
|
if node_name in custom_node_map:
|
||||||
node_path = os.path.join(custom_nodes_path, node_name)
|
node_path = os.path.join(custom_nodes_path, node_name)
|
||||||
return node_path, custom_node_map[node_name]
|
return node_path, custom_node_map[node_name]
|
||||||
|
elif robust:
|
||||||
|
node_path = os.path.join(custom_nodes_path, node_name)
|
||||||
|
return node_path, None
|
||||||
|
|
||||||
print(f"ERROR: invalid node name '{node_name}'")
|
print(f"ERROR: invalid node name '{node_name}'")
|
||||||
exit(-1)
|
exit(-1)
|
||||||
|
|
||||||
|
|
||||||
def install_node(node_name, is_all=False, cnt_msg=''):
|
def install_node(node_name, is_all=False, cnt_msg=''):
|
||||||
node_path, node_item = lookup_node_path(node_name)
|
if '://' in node_name:
|
||||||
|
# install via urls
|
||||||
if os.path.exists(node_path):
|
res = core.gitclone_install([node_name])
|
||||||
if not is_all:
|
|
||||||
print(f"{cnt_msg} [ SKIPPED ] {node_name:50} => Already installed")
|
|
||||||
elif os.path.exists(node_path+'.disabled'):
|
|
||||||
enable_node(node_name)
|
|
||||||
else:
|
|
||||||
res = core.gitclone_install(node_item['files'], instant_execution=True, msg_prefix=f"[{cnt_msg}] ")
|
|
||||||
if not res:
|
if not res:
|
||||||
print(f"ERROR: An error occurred while installing '{node_name}'.")
|
print(f"ERROR: An error occurred while installing '{node_name}'.")
|
||||||
else:
|
else:
|
||||||
print(f"{cnt_msg} [INSTALLED] {node_name:50}")
|
print(f"{cnt_msg} [INSTALLED] {node_name:50}")
|
||||||
|
else:
|
||||||
|
node_path, node_item = lookup_node_path(node_name)
|
||||||
|
|
||||||
|
if os.path.exists(node_path):
|
||||||
|
if not is_all:
|
||||||
|
print(f"{cnt_msg} [ SKIPPED ] {node_name:50} => Already installed")
|
||||||
|
elif os.path.exists(node_path+'.disabled'):
|
||||||
|
enable_node(node_name)
|
||||||
|
else:
|
||||||
|
res = core.gitclone_install(node_item['files'], instant_execution=True, msg_prefix=f"[{cnt_msg}] ")
|
||||||
|
if not res:
|
||||||
|
print(f"ERROR: An error occurred while installing '{node_name}'.")
|
||||||
|
else:
|
||||||
|
print(f"{cnt_msg} [INSTALLED] {node_name:50}")
|
||||||
|
|
||||||
|
|
||||||
def reinstall_node(node_name, is_all=False, cnt_msg=''):
|
def reinstall_node(node_name, is_all=False, cnt_msg=''):
|
||||||
@ -293,10 +304,13 @@ def reinstall_node(node_name, is_all=False, cnt_msg=''):
|
|||||||
|
|
||||||
|
|
||||||
def fix_node(node_name, is_all=False, cnt_msg=''):
|
def fix_node(node_name, is_all=False, cnt_msg=''):
|
||||||
node_path, node_item = lookup_node_path(node_name)
|
node_path, node_item = lookup_node_path(node_name, robust=True)
|
||||||
|
|
||||||
|
files = node_item['files'] if node_item is not None else [node_path]
|
||||||
|
|
||||||
if os.path.exists(node_path):
|
if os.path.exists(node_path):
|
||||||
print(f"{cnt_msg} [ FIXING ]: {node_name:50} => Disabled")
|
print(f"{cnt_msg} [ FIXING ]: {node_name:50} => Disabled")
|
||||||
res = core.gitclone_fix(node_item['files'], instant_execution=True)
|
res = core.gitclone_fix(files, instant_execution=True)
|
||||||
if not res:
|
if not res:
|
||||||
print(f"ERROR: An error occurred while fixing '{node_name}'.")
|
print(f"ERROR: An error occurred while fixing '{node_name}'.")
|
||||||
elif not is_all and os.path.exists(node_path+'.disabled'):
|
elif not is_all and os.path.exists(node_path+'.disabled'):
|
||||||
@ -306,9 +320,12 @@ def fix_node(node_name, is_all=False, cnt_msg=''):
|
|||||||
|
|
||||||
|
|
||||||
def uninstall_node(node_name, is_all=False, cnt_msg=''):
|
def uninstall_node(node_name, is_all=False, cnt_msg=''):
|
||||||
node_path, node_item = lookup_node_path(node_name)
|
node_path, node_item = lookup_node_path(node_name, robust=True)
|
||||||
|
|
||||||
|
files = node_item['files'] if node_item is not None else [node_path]
|
||||||
|
|
||||||
if os.path.exists(node_path) or os.path.exists(node_path+'.disabled'):
|
if os.path.exists(node_path) or os.path.exists(node_path+'.disabled'):
|
||||||
res = core.gitclone_uninstall(node_item['files'])
|
res = core.gitclone_uninstall(files)
|
||||||
if not res:
|
if not res:
|
||||||
print(f"ERROR: An error occurred while uninstalling '{node_name}'.")
|
print(f"ERROR: An error occurred while uninstalling '{node_name}'.")
|
||||||
else:
|
else:
|
||||||
@ -318,8 +335,11 @@ def uninstall_node(node_name, is_all=False, cnt_msg=''):
|
|||||||
|
|
||||||
|
|
||||||
def update_node(node_name, is_all=False, cnt_msg=''):
|
def update_node(node_name, is_all=False, cnt_msg=''):
|
||||||
node_path, node_item = lookup_node_path(node_name)
|
node_path, node_item = lookup_node_path(node_name, robust=True)
|
||||||
res = core.gitclone_update(node_item['files'], skip_script=True, msg_prefix=f"[{cnt_msg}] ")
|
|
||||||
|
files = node_item['files'] if node_item is not None else [node_path]
|
||||||
|
|
||||||
|
res = core.gitclone_update(files, skip_script=True, msg_prefix=f"[{cnt_msg}] ")
|
||||||
post_install(node_path)
|
post_install(node_path)
|
||||||
if not res:
|
if not res:
|
||||||
print(f"ERROR: An error occurred while uninstalling '{node_name}'.")
|
print(f"ERROR: An error occurred while uninstalling '{node_name}'.")
|
||||||
@ -339,33 +359,39 @@ def enable_node(node_name, is_all=False, cnt_msg=''):
|
|||||||
if node_name == 'ComfyUI-Manager':
|
if node_name == 'ComfyUI-Manager':
|
||||||
return
|
return
|
||||||
|
|
||||||
node_path, _ = lookup_node_path(node_name)
|
node_path, node_item = lookup_node_path(node_name, robust=True)
|
||||||
|
|
||||||
if os.path.exists(node_path+'.disabled'):
|
files = node_item['files'] if node_item is not None else [node_path]
|
||||||
current_name = node_path+'.disabled'
|
|
||||||
os.rename(current_name, node_path)
|
for x in files:
|
||||||
print(f"{cnt_msg} [ENABLED] {node_name:50}")
|
if os.path.exists(x+'.disabled'):
|
||||||
elif os.path.exists(node_path):
|
current_name = x+'.disabled'
|
||||||
print(f"{cnt_msg} [SKIPPED] {node_name:50} => Already enabled")
|
os.rename(current_name, x)
|
||||||
elif not is_all:
|
print(f"{cnt_msg} [ENABLED] {node_name:50}")
|
||||||
print(f"{cnt_msg} [SKIPPED] {node_name:50} => Not installed")
|
elif os.path.exists(x):
|
||||||
|
print(f"{cnt_msg} [SKIPPED] {node_name:50} => Already enabled")
|
||||||
|
elif not is_all:
|
||||||
|
print(f"{cnt_msg} [SKIPPED] {node_name:50} => Not installed")
|
||||||
|
|
||||||
|
|
||||||
def disable_node(node_name, is_all=False, cnt_msg=''):
|
def disable_node(node_name, is_all=False, cnt_msg=''):
|
||||||
if node_name == 'ComfyUI-Manager':
|
if node_name == 'ComfyUI-Manager':
|
||||||
return
|
return
|
||||||
|
|
||||||
node_path, _ = lookup_node_path(node_name)
|
node_path, node_item = lookup_node_path(node_name, robust=True)
|
||||||
|
|
||||||
if os.path.exists(node_path):
|
files = node_item['files'] if node_item is not None else [node_path]
|
||||||
current_name = node_path
|
|
||||||
new_name = node_path+'.disabled'
|
for x in files:
|
||||||
os.rename(current_name, new_name)
|
if os.path.exists(x):
|
||||||
print(f"{cnt_msg} [DISABLED] {node_name:50}")
|
current_name = x
|
||||||
elif os.path.exists(node_path+'.disabled'):
|
new_name = x+'.disabled'
|
||||||
print(f"{cnt_msg} [ SKIPPED] {node_name:50} => Already disabled")
|
os.rename(current_name, new_name)
|
||||||
elif not is_all:
|
print(f"{cnt_msg} [DISABLED] {node_name:50}")
|
||||||
print(f"{cnt_msg} [ SKIPPED] {node_name:50} => Not installed")
|
elif os.path.exists(x+'.disabled'):
|
||||||
|
print(f"{cnt_msg} [ SKIPPED] {node_name:50} => Already disabled")
|
||||||
|
elif not is_all:
|
||||||
|
print(f"{cnt_msg} [ SKIPPED] {node_name:50} => Not installed")
|
||||||
|
|
||||||
|
|
||||||
def show_list(kind, simple=False):
|
def show_list(kind, simple=False):
|
||||||
|
|||||||
@ -21,7 +21,7 @@ sys.path.append(glob_path)
|
|||||||
import cm_global
|
import cm_global
|
||||||
from manager_util import *
|
from manager_util import *
|
||||||
|
|
||||||
version = [2, 22, 3]
|
version = [2, 22, 4]
|
||||||
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')
|
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')
|
||||||
|
|
||||||
comfyui_manager_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
|
comfyui_manager_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user