Added the data dir

This commit is contained in:
Connor Johnstone
2026-03-22 13:00:12 -04:00
parent 51f2c2ae8f
commit 88b280c2b2
2 changed files with 16 additions and 17 deletions
+1 -1
View File
@@ -37,9 +37,9 @@ COPY --from=backend /build/shanty-dl/scripts/cookie_manager.py /usr/share/shanty
RUN mkdir -p /config /data /music RUN mkdir -p /config /data /music
ENV SHANTY_CONFIG=/config/config.yaml ENV SHANTY_CONFIG=/config/config.yaml
ENV SHANTY_DATA_DIR=/data
ENV SHANTY_DATABASE_URL=sqlite:///data/shanty.db?mode=rwc ENV SHANTY_DATABASE_URL=sqlite:///data/shanty.db?mode=rwc
ENV SHANTY_LIBRARY_PATH=/music ENV SHANTY_LIBRARY_PATH=/music
ENV SHANTY_DOWNLOAD_PATH=/data/downloads
EXPOSE 8085 6080 EXPOSE 8085 6080
+12 -13
View File
@@ -284,18 +284,13 @@ fn default_library_path() -> PathBuf {
} }
fn default_database_url() -> String { fn default_database_url() -> String {
let data_dir = dirs::data_dir() let dd = data_dir();
.unwrap_or_else(|| PathBuf::from(".")) std::fs::create_dir_all(&dd).ok();
.join("shanty"); format!("sqlite://{}?mode=rwc", dd.join("shanty.db").display())
std::fs::create_dir_all(&data_dir).ok();
format!("sqlite://{}?mode=rwc", data_dir.join("shanty.db").display())
} }
fn default_download_path() -> PathBuf { fn default_download_path() -> PathBuf {
let dir = dirs::data_dir() let dir = data_dir().join("downloads");
.unwrap_or_else(|| PathBuf::from("."))
.join("shanty")
.join("downloads");
std::fs::create_dir_all(&dir).ok(); std::fs::create_dir_all(&dir).ok();
dir dir
} }
@@ -359,11 +354,18 @@ fn default_vnc_port() -> u16 {
6080 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 { pub fn data_dir() -> PathBuf {
if let Ok(v) = std::env::var("SHANTY_DATA_DIR") {
PathBuf::from(v)
} else {
dirs::data_dir() dirs::data_dir()
.unwrap_or_else(|| PathBuf::from(".")) .unwrap_or_else(|| PathBuf::from("."))
.join("shanty") .join("shanty")
}
} }
// --- Loading and Saving --- // --- Loading and Saving ---
@@ -430,9 +432,6 @@ impl AppConfig {
if let Ok(v) = std::env::var("SHANTY_LIBRARY_PATH") { if let Ok(v) = std::env::var("SHANTY_LIBRARY_PATH") {
config.library_path = PathBuf::from(v); 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") if let Ok(v) = std::env::var("SHANTY_WEB_PORT")
&& let Ok(port) = v.parse() && let Ok(port) = v.parse()
{ {