diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-03-01 13:53:58 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-06-01 13:59:37 +0200 |
commit | c36a8f52d2a504d086a5cf9f5eae6fbf9cec4c18 (patch) | |
tree | 20d21774bb7e4d384d2c0d4ca4fb771097d97cdf | |
parent | 1e0b36bb8e08229a5cf8d91947e50893a25dfd4c (diff) |
Add tagging when importing
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | bin/domain/imag-mail/Cargo.toml | 1 | ||||
-rw-r--r-- | bin/domain/imag-mail/src/config.rs | 16 | ||||
-rw-r--r-- | bin/domain/imag-mail/src/lib.rs | 9 |
3 files changed, 25 insertions, 1 deletions
diff --git a/bin/domain/imag-mail/Cargo.toml b/bin/domain/imag-mail/Cargo.toml index 8e5e5a4d..4e327832 100644 --- a/bin/domain/imag-mail/Cargo.toml +++ b/bin/domain/imag-mail/Cargo.toml @@ -34,6 +34,7 @@ libimagerror = { version = "0.10.0", path = "../../../lib/core/libimagerror" libimagmail = { version = "0.10.0", path = "../../../lib/domain/libimagmail" } libimagutil = { version = "0.10.0", path = "../../../lib/etc/libimagutil" } libimagentryref = { version = "0.10.0", path = "../../../lib/entry/libimagentryref" } +libimagentrytag = { version = "0.10.0", path = "../../../lib/entry/libimagentrytag" } libimaginteraction = { version = "0.10.0", path = "../../../lib/etc/libimaginteraction" } [dependencies.clap] diff --git a/bin/domain/imag-mail/src/config.rs b/bin/domain/imag-mail/src/config.rs index 39cee237..0e43ac8e 100644 --- a/bin/domain/imag-mail/src/config.rs +++ b/bin/domain/imag-mail/src/config.rs @@ -33,6 +33,12 @@ pub struct MailConfig { #[serde(rename = "notmuch_database")] notmuch_database_path: PathBuf, + + #[serde(rename = "import_tag")] + import_tag: Option<String>, + + #[serde(rename = "import_notmuch_tags")] + import_notmuch_tags: bool } impl MailConfig { @@ -63,4 +69,14 @@ impl MailConfig { self.notmuch_database_path.clone() } } + + pub fn get_import_tag(&self) -> Option<&String> { + self.import_tag.as_ref() + } + + pub fn get_import_notmuch_tags(&self) -> bool { + self.import_notmuch_tags + } + } + diff --git a/bin/domain/imag-mail/src/lib.rs b/bin/domain/imag-mail/src/lib.rs index f0a9eec5..4c851548 100644 --- a/bin/domain/imag-mail/src/lib.rs +++ b/bin/domain/imag-mail/src/lib.rs @@ -51,6 +51,7 @@ extern crate libimagerror; extern crate libimagstore; extern crate libimagutil; extern crate libimagentryref; +extern crate libimagentrytag; extern crate libimaginteraction; use std::io::Write; @@ -75,6 +76,7 @@ use libimagrt::runtime::Runtime; use libimagrt::application::ImagApplication; use libimagstore::iter::get::StoreIdGetIteratorExtension; use libimagstore::store::FileLockEntry; +use libimagentrytag::tag::is_tag_str; mod config; mod ui; @@ -131,12 +133,17 @@ fn import(rt: &Runtime) -> Result<()> { let store = rt.store(); let notmuch_path = config.get_notmuch_database_path(rt); let notmuch_connection = NotmuchConnection::open(notmuch_path)?; + let import_nm_tags = config.get_import_notmuch_tags(); + + if let Some(ref tag) = config.get_import_tag() { + let _ = is_tag_str(tag)?; + } debug!("Importing mail with query = '{}'", query); let r = store .with_connection(¬much_connection) - .import_with_query(query)? + .import_with_query(query, config.get_import_tag().map(String::clone), import_nm_tags)? .into_iter() .map(|fle| rt.report_touched(fle.get_location())) .collect::<Result<Vec<_>>>() |