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,