notmuch: improved error handling and logging
This commit is contained in:
parent
a0eb8dcba6
commit
05cdcec244
@ -213,7 +213,7 @@ use std::{
|
|||||||
process::Command,
|
process::Command,
|
||||||
};
|
};
|
||||||
|
|
||||||
use log::info;
|
use log::{error, info};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
/// # Number of seconds since the Epoch
|
/// # Number of seconds since the Epoch
|
||||||
@ -507,14 +507,19 @@ impl Notmuch {
|
|||||||
) -> Result<SearchSummary, NotmuchError> {
|
) -> Result<SearchSummary, NotmuchError> {
|
||||||
let query = if query.is_empty() { "*" } else { query };
|
let query = if query.is_empty() { "*" } else { query };
|
||||||
|
|
||||||
let res = self.run_notmuch([
|
let res = self
|
||||||
"search",
|
.run_notmuch([
|
||||||
"--format=json",
|
"search",
|
||||||
&format!("--offset={offset}"),
|
"--format=json",
|
||||||
&format!("--limit={limit}"),
|
&format!("--offset={offset}"),
|
||||||
query,
|
&format!("--limit={limit}"),
|
||||||
])?;
|
query,
|
||||||
Ok(serde_json::from_slice(&res)?)
|
])
|
||||||
|
.inspect_err(|err| error!("failed to notmuch search for query '{query}': {err}"))?;
|
||||||
|
Ok(serde_json::from_slice(&res).unwrap_or_else(|err| {
|
||||||
|
error!("failed to decode search result for query '{query}': {err}");
|
||||||
|
SearchSummary(Vec::new())
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn count(&self, query: &str) -> Result<usize, NotmuchError> {
|
pub fn count(&self, query: &str) -> Result<usize, NotmuchError> {
|
||||||
@ -523,8 +528,10 @@ impl Notmuch {
|
|||||||
// let res = self.run_notmuch(["count", "--output=threads", query])?;
|
// let res = self.run_notmuch(["count", "--output=threads", query])?;
|
||||||
let res = self.run_notmuch(["count", query])?;
|
let res = self.run_notmuch(["count", query])?;
|
||||||
// Strip '\n' from res.
|
// Strip '\n' from res.
|
||||||
let s = std::str::from_utf8(&res[..res.len() - 1])?;
|
let s = std::str::from_utf8(&res)?.trim();
|
||||||
Ok(s.parse()?)
|
Ok(s.parse()
|
||||||
|
.inspect_err(|err| error!("failed to parse count for query '{query}': {err}"))
|
||||||
|
.unwrap_or(0))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn show(&self, query: &str) -> Result<ThreadSet, NotmuchError> {
|
pub fn show(&self, query: &str) -> Result<ThreadSet, NotmuchError> {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user