mirror of
https://github.com/oobabooga/textgen.git
synced 2026-07-23 11:20:54 -05:00
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
def resolve_user_data_dir():
|
|
"""
|
|
Resolve the user_data directory path. Order of precedence:
|
|
1. --user-data-dir CLI flag (pre-parsed from sys.argv before argparse)
|
|
2. --portable + ../app exists: ../../user_data (electron build, where
|
|
the project lives one level deeper than in classic portable mode)
|
|
3. --portable: ../user_data
|
|
4. Default: 'user_data'
|
|
"""
|
|
script_dir = Path(__file__).resolve().parent.parent
|
|
|
|
# Check sys.argv for --user-data-dir before argparse runs
|
|
for i, arg in enumerate(sys.argv):
|
|
if arg == '--user-data-dir' and i + 1 < len(sys.argv):
|
|
return Path(sys.argv[i + 1])
|
|
elif arg.startswith('--user-data-dir='):
|
|
return Path(arg.split('=', 1)[1])
|
|
|
|
is_portable = '--portable' in sys.argv
|
|
if is_portable:
|
|
# Electron build: ../app exists alongside the project; prefer ../../user_data.
|
|
if (script_dir.parent / 'app').exists():
|
|
electron_user_data = script_dir.parent.parent / 'user_data'
|
|
if electron_user_data.exists():
|
|
return electron_user_data
|
|
|
|
# Classic portable build: ../user_data.
|
|
parent_path = script_dir.parent / 'user_data'
|
|
if parent_path.exists():
|
|
return parent_path
|
|
|
|
return Path('user_data')
|