vorta/src/vorta/config.py

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()