From 151251719bf50b38db7dda13034f8177b7d83684 Mon Sep 17 00:00:00 2001 From: ApliNi <59365724+ApliNi@users.noreply.github.com> Date: Tue, 3 Feb 2026 13:42:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=20(#632)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 添加配置目录环境变量 * feat: 添加配置目录命令行参数 * feat: 添加配置目录短参数 * refactor: 调整一下写法 --------- Co-authored-by: amtoaer --- crates/bili_sync/src/config/args.rs | 4 ++++ crates/bili_sync/src/config/current.rs | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/crates/bili_sync/src/config/args.rs b/crates/bili_sync/src/config/args.rs index def629f..78c4c60 100644 --- a/crates/bili_sync/src/config/args.rs +++ b/crates/bili_sync/src/config/args.rs @@ -1,4 +1,5 @@ use std::borrow::Cow; +use std::path::PathBuf; use std::sync::LazyLock; use clap::Parser; @@ -16,6 +17,9 @@ pub struct Args { #[arg(short, long, env = "DISABLE_CREDENTIAL_REFRESH")] pub disable_credential_refresh: bool, + + #[arg(short, long, env = "BILI_SYNC_CONFIG_DIR")] + pub config_dir: Option, } mod built_info { diff --git a/crates/bili_sync/src/config/current.rs b/crates/bili_sync/src/config/current.rs index f26e08f..1824934 100644 --- a/crates/bili_sync/src/config/current.rs +++ b/crates/bili_sync/src/config/current.rs @@ -8,6 +8,7 @@ use serde::{Deserialize, Serialize}; use validator::Validate; use crate::bilibili::{Credential, DanmakuOption, FilterOption}; +use crate::config::args::ARGS; use crate::config::default::{ default_auth_token, default_bind_address, default_collection_path, default_favorite_path, default_submission_path, default_time_format, @@ -16,8 +17,12 @@ use crate::config::item::{ConcurrentLimit, NFOTimeType, SkipOption, Trigger}; use crate::notifier::Notifier; use crate::utils::model::{load_db_config, save_db_config}; -pub static CONFIG_DIR: LazyLock = - LazyLock::new(|| dirs::config_dir().expect("No config path found").join("bili-sync")); +pub static CONFIG_DIR: LazyLock = LazyLock::new(|| { + ARGS.config_dir + .clone() + .or_else(|| dirs::config_dir().map(|dir| dir.join("bili-sync"))) + .expect("No config path found") +}); #[derive(Serialize, Deserialize, Validate, Clone)] pub struct Config {