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
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
+12 -13
View File
@@ -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 {
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()
{