mirror of https://github.com/borgbase/vorta
62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
from pathlib import Path
|
|
|
|
import platformdirs
|
|
|
|
APP_NAME = 'Vorta'
|
|
APP_AUTHOR = 'BorgBase'
|
|
APP_ID_DARWIN = 'com.borgbase.client.macos'
|
|
SETTINGS_DIR = None
|
|
LOG_DIR = None
|
|
CACHE_DIR = None
|
|
TEMP_DIR = None
|
|
PROFILE_BOOTSTRAP_FILE = None
|
|
|
|
|
|
def default_dev_dir() -> Path:
|
|
"""Returns a default dir for config files in the project's main folder"""
|
|
return Path(__file__).parent.parent.parent / '.dev_config'
|
|
|
|
|
|
def init_from_platformdirs():
|
|
"""Initializes config dirs for system-wide use"""
|
|
dirs = platformdirs.PlatformDirs(APP_NAME, APP_AUTHOR)
|
|
init(dirs.user_data_path, dirs.user_log_path, dirs.user_cache_path, dirs.user_cache_path / 'tmp', Path.home())
|
|
|
|
|
|
def init_dev_mode(dir: Path):
|
|
"""Initializes config dirs for local use inside provided dir"""
|
|
dir_full_path = Path(dir).resolve()
|
|
init(
|
|
dir_full_path / 'settings',
|
|
dir_full_path / 'logs',
|
|
dir_full_path / 'cache',
|
|
dir_full_path / 'tmp',
|
|
dir_full_path,
|
|
)
|
|
|
|
|
|
def init(settings: Path, logs: Path, cache: Path, tmp: Path, bootstrap: Path):
|
|
"""Initializes config directories with provided paths"""
|
|
global SETTINGS_DIR
|
|
global LOG_DIR
|
|
global CACHE_DIR
|
|
global TEMP_DIR
|
|
global PROFILE_BOOTSTRAP_FILE
|
|
SETTINGS_DIR = settings
|
|
LOG_DIR = logs
|
|
CACHE_DIR = cache
|
|
TEMP_DIR = tmp
|
|
PROFILE_BOOTSTRAP_FILE = bootstrap / '.vorta-init.json'
|
|
ensure_dirs()
|
|
|
|
|
|
def ensure_dirs():
|
|
"""Creates config dirs and parent dirs if they don't exist"""
|
|
# ensure directories exist
|
|
for dir in (SETTINGS_DIR, LOG_DIR, CACHE_DIR, TEMP_DIR):
|
|
dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
|
|
# Make sure that the config values are valid
|
|
init_from_platformdirs()
|