summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-03-01 13:53:58 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-06-01 13:59:37 +0200
commitc36a8f52d2a504d086a5cf9f5eae6fbf9cec4c18 (patch)
tree20d21774bb7e4d384d2c0d4ca4fb771097d97cdf
parent1e0b36bb8e08229a5cf8d91947e50893a25dfd4c (diff)
Add tagging when importing
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--bin/domain/imag-mail/Cargo.toml1
-rw-r--r--bin/domain/imag-mail/src/config.rs16
-rw-r--r--bin/domain/imag-mail/src/lib.rs9
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(&notmuch_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<_>>>()