Compare commits
2 Commits
51f2c2ae8f
...
763774ac1e
| Author | SHA1 | Date | |
|---|---|---|---|
| 763774ac1e | |||
| 88b280c2b2 |
+1
-1
@@ -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
|
||||||
|
|
||||||
|
|||||||
+21
-13
@@ -44,6 +44,10 @@ pub struct AppConfig {
|
|||||||
|
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub musicbrainz: MusicBrainzConfig,
|
pub musicbrainz: MusicBrainzConfig,
|
||||||
|
|
||||||
|
/// Log level: "error", "warn", "info", "debug", "trace". Default: "info".
|
||||||
|
#[serde(default = "default_log_level")]
|
||||||
|
pub log_level: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
@@ -219,6 +223,7 @@ impl Default for AppConfig {
|
|||||||
scheduling: SchedulingConfig::default(),
|
scheduling: SchedulingConfig::default(),
|
||||||
subsonic: SubsonicConfig::default(),
|
subsonic: SubsonicConfig::default(),
|
||||||
musicbrainz: MusicBrainzConfig::default(),
|
musicbrainz: MusicBrainzConfig::default(),
|
||||||
|
log_level: default_log_level(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -279,23 +284,22 @@ impl Default for MetadataConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn default_log_level() -> String {
|
||||||
|
"info".to_string()
|
||||||
|
}
|
||||||
|
|
||||||
fn default_library_path() -> PathBuf {
|
fn default_library_path() -> PathBuf {
|
||||||
dirs::audio_dir().unwrap_or_else(|| PathBuf::from("~/Music"))
|
dirs::audio_dir().unwrap_or_else(|| PathBuf::from("~/Music"))
|
||||||
}
|
}
|
||||||
|
|
||||||
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,12 +363,19 @@ 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 +441,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()
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
Submodule shanty-web updated: 3dba620c9b...44c96d125a
+18
-6
@@ -56,18 +56,30 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
|
|
||||||
let cli = Cli::parse();
|
let cli = Cli::parse();
|
||||||
|
|
||||||
|
// Load config early so we can use log_level from it
|
||||||
|
let mut config = AppConfig::load(cli.config.as_deref());
|
||||||
|
|
||||||
|
// CLI -v flags override config log_level
|
||||||
let filter = match cli.verbose {
|
let filter = match cli.verbose {
|
||||||
0 => "info,shanty=info,shanty_web=info",
|
0 => {
|
||||||
1 => "info,shanty=debug,shanty_web=debug",
|
// Use config log_level
|
||||||
_ => "debug,shanty=trace,shanty_web=trace",
|
let level = config.log_level.to_lowercase();
|
||||||
|
match level.as_str() {
|
||||||
|
"error" => "error".to_string(),
|
||||||
|
"warn" => "warn".to_string(),
|
||||||
|
"debug" => "debug,shanty=debug,shanty_web=debug".to_string(),
|
||||||
|
"trace" => "trace,shanty=trace,shanty_web=trace".to_string(),
|
||||||
|
_ => "info,shanty=info,shanty_web=info".to_string(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
1 => "info,shanty=debug,shanty_web=debug".to_string(),
|
||||||
|
_ => "debug,shanty=trace,shanty_web=trace".to_string(),
|
||||||
};
|
};
|
||||||
tracing_subscriber::fmt()
|
tracing_subscriber::fmt()
|
||||||
.with_env_filter(
|
.with_env_filter(
|
||||||
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(filter)),
|
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(&filter)),
|
||||||
)
|
)
|
||||||
.init();
|
.init();
|
||||||
|
|
||||||
let mut config = AppConfig::load(cli.config.as_deref());
|
|
||||||
if let Some(port) = cli.port {
|
if let Some(port) = cli.port {
|
||||||
config.web.port = port;
|
config.web.port = port;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user