Skip to content

Commit b962db9

Browse files
authored
Add cli arg to override user directory (#4856)
* Override user directory. * Use overridden user directory. * Remove prints. * Remove references to global user_files. * Remove unused replace_folder function. * Remove newline. * Remove global during get_user_directory. * Add validation.
1 parent d0b7ab8 commit b962db9

File tree

4 files changed

+23
-8
lines changed

4 files changed

+23
-8
lines changed

app/user_manager.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,15 @@
77
from aiohttp import web
88
from urllib import parse
99
from comfy.cli_args import args
10-
from folder_paths import user_directory
10+
import folder_paths
1111
from .app_settings import AppSettings
1212

1313
default_user = "default"
14-
users_file = os.path.join(user_directory, "users.json")
1514

1615

1716
class UserManager():
1817
def __init__(self):
19-
global user_directory
18+
user_directory = folder_paths.get_user_directory()
2019

2120
self.settings = AppSettings(self)
2221
if not os.path.exists(user_directory):
@@ -26,14 +25,17 @@ def __init__(self):
2625
print("****** For multi-user setups add the --multi-user CLI argument to enable multiple user profiles. ******")
2726

2827
if args.multi_user:
29-
if os.path.isfile(users_file):
30-
with open(users_file) as f:
28+
if os.path.isfile(self.get_users_file()):
29+
with open(self.get_users_file()) as f:
3130
self.users = json.load(f)
3231
else:
3332
self.users = {}
3433
else:
3534
self.users = {"default": "default"}
3635

36+
def get_users_file(self):
37+
return os.path.join(folder_paths.get_user_directory(), "users.json")
38+
3739
def get_request_user_id(self, request):
3840
user = "default"
3941
if args.multi_user and "comfy-user" in request.headers:
@@ -45,7 +47,7 @@ def get_request_user_id(self, request):
4547
return user
4648

4749
def get_request_user_filepath(self, request, file, type="userdata", create_dir=True):
48-
global user_directory
50+
user_directory = folder_paths.get_user_directory()
4951

5052
if type == "userdata":
5153
root_dir = user_directory
@@ -85,8 +87,7 @@ def add_user(self, name):
8587

8688
self.users[user_id] = name
8789

88-
global users_file
89-
with open(users_file, "w") as f:
90+
with open(self.get_users_file(), "w") as f:
9091
json.dump(self.users, f)
9192

9293
return user_id

comfy/cli_args.py

+2
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,8 @@ def is_valid_directory(path: Optional[str]) -> Optional[str]:
171171
help="The local filesystem path to the directory where the frontend is located. Overrides --front-end-version.",
172172
)
173173

174+
parser.add_argument("--user-directory", type=is_valid_directory, default=None, help="Set the ComfyUI user directory with an absolute path.")
175+
174176
if comfy.options.args_parsing:
175177
args = parser.parse_args()
176178
else:

folder_paths.py

+7
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,13 @@ def get_input_directory() -> str:
8484
global input_directory
8585
return input_directory
8686

87+
def get_user_directory() -> str:
88+
return user_directory
89+
90+
def set_user_directory(user_dir: str) -> None:
91+
global user_directory
92+
user_directory = user_dir
93+
8794

8895
#NOTE: used in http server so don't put folders that should not be accessed remotely
8996
def get_directory_by_type(type_name: str) -> str | None:

main.py

+5
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,11 @@ def cleanup_temp():
232232
input_dir = os.path.abspath(args.input_directory)
233233
logging.info(f"Setting input directory to: {input_dir}")
234234
folder_paths.set_input_directory(input_dir)
235+
236+
if args.user_directory:
237+
user_dir = os.path.abspath(args.user_directory)
238+
logging.info(f"Setting user directory to: {user_dir}")
239+
folder_paths.set_user_directory(user_dir)
235240

236241
if args.quick_test_for_ci:
237242
exit(0)

0 commit comments

Comments
 (0)