From c3958553a5c06f9f8cf3d8578c21e195a900ef65 Mon Sep 17 00:00:00 2001 From: pyr0ball Date: Mon, 18 May 2026 18:22:50 -0700 Subject: [PATCH] fix(m1): move mut rx inside async block (clippy), log+continue on parse errors in load() --- src-tauri/src/lib.rs | 3 ++- src-tauri/src/patterns.rs | 37 ++++++++++++++++++++++--------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index b26a24f..b8f4429 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -51,11 +51,12 @@ pub fn run() { .map(|pf| pf.log_paths.clone()) .unwrap_or_default(); - let mut rx = watcher::spawn(log_paths); + let rx = watcher::spawn(log_paths); let pf = Arc::new(pattern_file); let app_handle = app.handle().clone(); tauri::async_runtime::spawn(async move { + let mut rx = rx; while let Some(event) = rx.recv().await { if let Some(ref pf) = *pf { if let Some(matched) = patterns::classify(&event, pf) { diff --git a/src-tauri/src/patterns.rs b/src-tauri/src/patterns.rs index 7310d89..4821264 100644 --- a/src-tauri/src/patterns.rs +++ b/src-tauri/src/patterns.rs @@ -50,23 +50,30 @@ pub fn load(source_os: &str, distro_family: &str) -> Result { format!("/usr/share/robin/patterns/{filename}"), ]; for path in &candidates { - if let Ok(content) = std::fs::read_to_string(path) { - let pf: PatternFile = - toml::from_str(&content).with_context(|| format!("failed to parse {path}"))?; - for p in &pf.patterns { - anyhow::ensure!( - !p.match_text.is_empty(), - "pattern '{}' has empty match_text in {path}", - p.id - ); - anyhow::ensure!( - !p.sources.is_empty(), - "pattern '{}' has empty sources list in {path}", - p.id - ); + let content = match std::fs::read_to_string(path) { + Ok(c) => c, + Err(_) => continue, + }; + let pf: PatternFile = match toml::from_str(&content) { + Ok(p) => p, + Err(e) => { + log::warn!("patterns: failed to parse {path}: {e}"); + continue; } - return Ok(pf); + }; + for p in &pf.patterns { + anyhow::ensure!( + !p.match_text.is_empty(), + "pattern '{}' has empty match_text in {path}", + p.id + ); + anyhow::ensure!( + !p.sources.is_empty(), + "pattern '{}' has empty sources list in {path}", + p.id + ); } + return Ok(pf); } anyhow::bail!("pattern file not found: {filename}") }