From 0dee856e80375684c8fbafedd1e79994334e6749 Mon Sep 17 00:00:00 2001 From: Donkie Date: Sat, 25 Nov 2023 21:59:05 +0100 Subject: [PATCH] Added env vars to override all storage dirs --- .env.example | 12 ++++++++++++ spoolman/env.py | 21 +++++++++++++++++---- spoolman/main.py | 4 ++++ 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 52412a2..1dac358 100644 --- a/.env.example +++ b/.env.example @@ -19,6 +19,18 @@ # Default if not set: TRUE #SPOOLMAN_AUTOMATIC_BACKUP=TRUE +# Data directory, where the SQLite database is stored +# Default if not set: /home//.local/share/spoolman +#SPOOLMAN_DIR_DATA=/home/pi/spoolman_data + +# Backup directory, where the SQLite database backups are stored +# Default if not set: /home//.local/share/spoolman/backups +#SPOOLMAN_DIR_BACKUPS=/home/pi/spoolman_data/backups + +# Log directory +# Default if not set: /home//.local/share/spoolman +#SPOOLMAN_DIR_LOGS=/home/pi/spoolman_data + # Host and port to listen on SPOOLMAN_HOST=0.0.0.0 SPOOLMAN_PORT=7912 diff --git a/spoolman/env.py b/spoolman/env.py index 5438f69..6d9840a 100644 --- a/spoolman/env.py +++ b/spoolman/env.py @@ -226,7 +226,11 @@ def get_data_dir() -> Path: Returns: Path: The data directory. """ - data_dir = Path(user_data_dir("spoolman")) + env_data_dir = os.getenv("SPOOLMAN_DIR_DATA") + if env_data_dir is not None: + data_dir = Path(env_data_dir) + else: + data_dir = Path(user_data_dir("spoolman")) data_dir.mkdir(parents=True, exist_ok=True) return data_dir @@ -237,7 +241,13 @@ def get_logs_dir() -> Path: Returns: Path: The logs directory. """ - return get_data_dir() + env_logs_dir = os.getenv("SPOOLMAN_DIR_LOGS") + if env_logs_dir is not None: + logs_dir = Path(env_logs_dir) + else: + logs_dir = get_data_dir() + logs_dir.mkdir(parents=True, exist_ok=True) + return logs_dir def get_backups_dir() -> Path: @@ -246,8 +256,11 @@ def get_backups_dir() -> Path: Returns: Path: The backups directory. """ - data_dir = get_data_dir() - backups_dir = data_dir.joinpath("backups") + env_backups_dir = os.getenv("SPOOLMAN_DIR_BACKUPS") + if env_backups_dir is not None: + backups_dir = Path(env_backups_dir) + else: + backups_dir = get_data_dir().joinpath("backups") backups_dir.mkdir(parents=True, exist_ok=True) return backups_dir diff --git a/spoolman/main.py b/spoolman/main.py index 078673b..97ff271 100644 --- a/spoolman/main.py +++ b/spoolman/main.py @@ -79,6 +79,10 @@ async def startup() -> None: env.get_build_date(), ) + logger.info("Using data directory: %s", env.get_data_dir().resolve()) + logger.info("Using logs directory: %s", env.get_logs_dir().resolve()) + logger.info("Using backups directory: %s", env.get_backups_dir().resolve()) + logger.info("Setting up database...") database.setup_db(database.get_connection_url())