summaryrefslogtreecommitdiffstats
path: root/bin/core/imag-create/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'bin/core/imag-create/src/main.rs')
-rw-r--r--bin/core/imag-create/src/main.rs76
1 files changed, 76 insertions, 0 deletions
diff --git a/bin/core/imag-create/src/main.rs b/bin/core/imag-create/src/main.rs
new file mode 100644
index 00000000..7083f074
--- /dev/null
+++ b/bin/core/imag-create/src/main.rs
@@ -0,0 +1,76 @@
+//
+// imag - the personal information management suite for the commandline
+// Copyright (C) 2015-2019 Matthias Beyer <mail@beyermatthias.de> and contributors
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; version
+// 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+//
+
+//#![deny(
+// non_camel_case_types,
+// non_snake_case,
+// path_statements,
+// trivial_numeric_casts,
+// unstable_features,
+// unused_allocation,
+// unused_import_braces,
+// unused_imports,
+// unused_must_use,
+// unused_mut,
+// unused_qualifications,
+// while_true,
+//)]
+
+extern crate clap;
+extern crate failure;
+#[macro_use] extern crate log;
+
+extern crate libimagerror;
+#[macro_use] extern crate libimagrt;
+extern crate libimagstore;
+
+use failure::Fallible as Result;
+
+use libimagerror::trace::MapErrTrace;
+use libimagrt::setup::generate_runtime_setup;
+use libimagstore::iter::create::StoreIdCreateIteratorExtension;
+use libimagstore::iter::retrieve::StoreIdRetrieveIteratorExtension;
+
+mod ui;
+
+fn main() {
+ let version = make_imag_version!();
+ let rt = generate_runtime_setup("imag-create",
+ &version,
+ "Plumbing tool creating entries",
+ ui::build_ui);
+
+ let force = rt.cli().is_present("force");
+
+ let ids = rt.ids::<crate::ui::PathProvider>()
+ .map_err_trace_exit_unwrap()
+ .unwrap_or_else(|| {
+ error!("No ids supplied");
+ ::std::process::exit(1);
+ })
+ .into_iter()
+ .map(Ok);
+
+ if force {
+ ids.into_retrieve_iter(rt.store()).collect::<Result<Vec<_>>>()
+ } else {
+ ids.into_create_iter(rt.store()).collect::<Result<Vec<_>>>()
+ }.map_err_trace_exit_unwrap();
+}
+