diff --git a/src/config.rs b/src/config.rs index ba7943a..918ca25 100644 --- a/src/config.rs +++ b/src/config.rs @@ -396,6 +396,29 @@ impl Settings { } + /// Get server password from password_file or directly from config if configured + pub fn get_server_password(&self) -> Result> { + if let Some(server) = &self.server { + // First check for password_file + if let Some(password_file) = &server.password_file { + debug!("CONFIG: Reading password from file: {:?}", password_file); + let password = fs::read_to_string(password_file) + .with_context(|| format!("Failed to read password file: {:?}", password_file))? + .trim() + .to_string(); + return Ok(Some(password)); + } + + // Fall back to direct password field + if let Some(password) = &server.password { + debug!("CONFIG: Using password from config"); + return Ok(Some(password.clone())); + } + } + Ok(None) + } + + /// Get server password from password_file or directly from config if configured pub fn get_server_password(&self) -> Result> { if let Some(server) = &self.server { diff --git a/src/modes/diff.rs b/src/modes/diff.rs index 522a24b..39fbc31 100644 --- a/src/modes/diff.rs +++ b/src/modes/diff.rs @@ -119,7 +119,7 @@ pub fn mode_diff( let settings = crate::config::Settings::new(args, crate::config::default_dir()?)?; - let item_service = crate::services::item_service::ItemService::new(&settings)?; + let item_service = crate::services::item_service::ItemService::new(settings.dir.clone()); let (item_a, item_b) = fetch_and_validate_items(conn, &ids, &item_service)?; diff --git a/src/parser/filter.pest b/src/parser/filter.pest index b1e5f2d..fedef7f 100644 --- a/src/parser/filter.pest +++ b/src/parser/filter.pest @@ -1,6 +1,6 @@ WHITESPACE = _{ " " | "\t" | "\n" | "\r" } -// This Pest grammar defines the syntax for filter chains used in the Keep application. +//! This Pest grammar defines the syntax for filter chains used in the Keep application. // Main entry point for parsing multiple filters separated by pipes filters = { SOI ~ filter ~ (pipe ~ filter)* ~ EOI } diff --git a/src/parser/filter_parser.rs b/src/parser/filter_parser.rs index 619d971..a4c55fd 100644 --- a/src/parser/filter_parser.rs +++ b/src/parser/filter_parser.rs @@ -6,6 +6,8 @@ use std::collections::HashMap; #[grammar = "filter.pest"] pub struct FilterParser; +use self::Rule; + #[derive(Debug)] pub struct Filter { pub name: String,