Skip to content

Commit 3a383d7

Browse files
committed
Add support for cli arg --custom-nodes-directory
1 parent 7d61033 commit 3a383d7

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

comfy/cli_args.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def __call__(self, parser, namespace, values, option_string=None):
4747
parser.add_argument("--output-directory", type=str, default=None, help="Set the ComfyUI output directory. Overrides --base-directory.")
4848
parser.add_argument("--temp-directory", type=str, default=None, help="Set the ComfyUI temp directory (default is in the ComfyUI directory). Overrides --base-directory.")
4949
parser.add_argument("--input-directory", type=str, default=None, help="Set the ComfyUI input directory. Overrides --base-directory.")
50+
parser.add_argument("--custom-nodes-directory", type=str, default=None, help="Set the ComfyUI custom_nodes directory. Overrides --base-directory.")
5051
parser.add_argument("--auto-launch", action="store_true", help="Automatically launch ComfyUI in the default browser.")
5152
parser.add_argument("--disable-auto-launch", action="store_true", help="Disable auto launching the browser.")
5253
parser.add_argument("--cuda-device", type=int, default=None, metavar="DEVICE_ID", help="Set the id of the cuda device this instance will use. All other devices will not be visible.")

folder_paths.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import time
55
import mimetypes
66
import logging
7+
import sys
78
from typing import Literal, List
89
from collections.abc import Collection
910

@@ -115,6 +116,16 @@ def set_input_directory(input_dir: str) -> None:
115116
global input_directory
116117
input_directory = input_dir
117118

119+
def set_custom_nodes_directory(custom_nodes_dir: str) -> None:
120+
global folder_names_and_paths
121+
122+
delimiter = ":"
123+
if sys.platform in ("win32", "cygwin"):
124+
delimiter = ";"
125+
126+
directories = custom_nodes_dir.split(delimiter)
127+
folder_names_and_paths["custom_nodes"] = (directories, set())
128+
118129
def get_output_directory() -> str:
119130
global output_directory
120131
return output_directory

main.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def apply_custom_paths():
3232
for config_path in itertools.chain(*args.extra_model_paths_config):
3333
utils.extra_config.load_extra_path_config(config_path)
3434

35-
# --output-directory, --input-directory, --user-directory
35+
# --output-directory, --input-directory, --user-directory, --custom-nodes-directory
3636
if args.output_directory:
3737
output_dir = os.path.abspath(args.output_directory)
3838
logging.info(f"Setting output directory to: {output_dir}")
@@ -56,6 +56,11 @@ def apply_custom_paths():
5656
logging.info(f"Setting user directory to: {user_dir}")
5757
folder_paths.set_user_directory(user_dir)
5858

59+
if args.custom_nodes_directory:
60+
custom_nodes_dir = os.path.abspath(args.custom_nodes_directory)
61+
logging.info(f"Setting custom nodes directory to: {custom_nodes_dir}")
62+
folder_paths.set_custom_nodes_directory(custom_nodes_dir)
63+
5964

6065
def execute_prestartup_script():
6166
if args.disable_all_custom_nodes and len(args.whitelist_custom_nodes) == 0:

0 commit comments

Comments
 (0)