From 88b280c2b2df42b295d9145feb6395c5e1b2bf31 Mon Sep 17 00:00:00 2001 From: Connor Johnstone Date: Sun, 22 Mar 2026 13:00:12 -0400 Subject: [PATCH] Added the data dir --- Dockerfile | 2 +- shanty-config/src/lib.rs | 31 +++++++++++++++---------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9338e18..f36bd0e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,9 +37,9 @@ COPY --from=backend /build/shanty-dl/scripts/cookie_manager.py /usr/share/shanty RUN mkdir -p /config /data /music ENV SHANTY_CONFIG=/config/config.yaml +ENV SHANTY_DATA_DIR=/data ENV SHANTY_DATABASE_URL=sqlite:///data/shanty.db?mode=rwc ENV SHANTY_LIBRARY_PATH=/music -ENV SHANTY_DOWNLOAD_PATH=/data/downloads EXPOSE 8085 6080 diff --git a/shanty-config/src/lib.rs b/shanty-config/src/lib.rs index f84f1e7..fff61ee 100644 --- a/shanty-config/src/lib.rs +++ b/shanty-config/src/lib.rs @@ -284,18 +284,13 @@ fn default_library_path() -> PathBuf { } fn default_database_url() -> String { - let data_dir = dirs::data_dir() - .unwrap_or_else(|| PathBuf::from(".")) - .join("shanty"); - std::fs::create_dir_all(&data_dir).ok(); - format!("sqlite://{}?mode=rwc", data_dir.join("shanty.db").display()) + let dd = data_dir(); + std::fs::create_dir_all(&dd).ok(); + format!("sqlite://{}?mode=rwc", dd.join("shanty.db").display()) } fn default_download_path() -> PathBuf { - let dir = dirs::data_dir() - .unwrap_or_else(|| PathBuf::from(".")) - .join("shanty") - .join("downloads"); + let dir = data_dir().join("downloads"); std::fs::create_dir_all(&dir).ok(); dir } @@ -359,11 +354,18 @@ fn default_vnc_port() -> u16 { 6080 } -/// Return the application data directory (e.g. ~/.local/share/shanty). +/// Return the application data directory. +/// +/// Uses `SHANTY_DATA_DIR` env var if set, otherwise `~/.local/share/shanty`. +/// In Docker, set `SHANTY_DATA_DIR=/data` so all data goes to the persistent volume. pub fn data_dir() -> PathBuf { - dirs::data_dir() - .unwrap_or_else(|| PathBuf::from(".")) - .join("shanty") + if let Ok(v) = std::env::var("SHANTY_DATA_DIR") { + PathBuf::from(v) + } else { + dirs::data_dir() + .unwrap_or_else(|| PathBuf::from(".")) + .join("shanty") + } } // --- Loading and Saving --- @@ -430,9 +432,6 @@ impl AppConfig { if let Ok(v) = std::env::var("SHANTY_LIBRARY_PATH") { config.library_path = PathBuf::from(v); } - if let Ok(v) = std::env::var("SHANTY_DOWNLOAD_PATH") { - config.download_path = PathBuf::from(v); - } if let Ok(v) = std::env::var("SHANTY_WEB_PORT") && let Ok(port) = v.parse() {