diff --git a/libimagtag/src/exec.rs b/libimagtag/src/exec.rs new file mode 100644 index 00000000..e9603d87 --- /dev/null +++ b/libimagtag/src/exec.rs @@ -0,0 +1,29 @@ +use clap::ArgMatches; + +use libimagstore::store::FileLockEntry; + +use result::Result; +use tagable::*; +use ui::{get_add_tags, get_remove_tags}; + +pub fn exec_cli_for_entry(matches: &ArgMatches, entry: &mut FileLockEntry) -> Result<()> { + match get_add_tags(matches) { + Some(ts) => for t in ts { + if let Err(e) = entry.add_tag(t) { + return Err(e); + } + }, + None => { }, + } + + match get_remove_tags(matches) { + Some(ts) => for t in ts { + if let Err(e) = entry.remove_tag(t) { + return Err(e); + } + }, + None => { }, + } + + Ok(()) +} diff --git a/libimagtag/src/lib.rs b/libimagtag/src/lib.rs index f4d1c543..edded91b 100644 --- a/libimagtag/src/lib.rs +++ b/libimagtag/src/lib.rs @@ -6,6 +6,7 @@ extern crate toml; extern crate libimagstore; pub mod error; +pub mod exec; pub mod result; pub mod tag; pub mod tagable;