From 1f84643486cecc1c5a0a96e4a49d007ca2d9bb22 Mon Sep 17 00:00:00 2001 From: Kai Sickeler Date: Sun, 8 Oct 2017 17:26:18 +0200 Subject: [PATCH] Dump all StoreIds Add StoreId Dump changes --- bin/core/imag-store/src/ids.rs | 42 +++++++++++++++++++++++++++++++++ bin/core/imag-store/src/main.rs | 3 +++ bin/core/imag-store/src/ui.rs | 11 +++++++++ doc/src/09020-changelog.md | 1 + 4 files changed, 57 insertions(+) create mode 100644 bin/core/imag-store/src/ids.rs diff --git a/bin/core/imag-store/src/ids.rs b/bin/core/imag-store/src/ids.rs new file mode 100644 index 00000000..7c7f5428 --- /dev/null +++ b/bin/core/imag-store/src/ids.rs @@ -0,0 +1,42 @@ +// +// imag - the personal information management suite for the commandline +// Copyright (C) 2015, 2016 Matthias Beyer 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 +// + +use libimagrt::runtime::Runtime; +use libimagerror::trace::*; + +pub fn ids(rt: &Runtime) { + let full = rt.cli().subcommand_matches("ids").unwrap() //secured by main + .is_present("full"); + let base = rt.store().path(); + let _ :Vec<_> = rt + .store() + .entries() + .map_err_trace_exit(1) + .unwrap() //safed + .map(|e| if full { + e.with_base(base.clone()) + } else { + e.without_base() + }) + .map(|i| i.to_str()) + .map(|elem| elem.map_err_trace_exit(1).unwrap()) + .map(|i| println!("{}", i)) + .collect(); +} + diff --git a/bin/core/imag-store/src/main.rs b/bin/core/imag-store/src/main.rs index 572f9e0d..a997654f 100644 --- a/bin/core/imag-store/src/main.rs +++ b/bin/core/imag-store/src/main.rs @@ -62,6 +62,7 @@ mod ui; mod update; mod verify; mod util; +mod ids; use std::ops::Deref; @@ -73,6 +74,7 @@ use retrieve::retrieve; use ui::build_ui; use update::update; use verify::verify; +use ids::ids; fn main() { let mut rt = generate_runtime_setup("imag-store", @@ -92,6 +94,7 @@ fn main() { "update" => update(&rt), "verify" => verify(&rt), "dump" => dump(&mut rt), + "ids" => ids(&rt), _ => { debug!("Unknown command"); // More error handling diff --git a/bin/core/imag-store/src/ui.rs b/bin/core/imag-store/src/ui.rs index 73b259bd..af5d907e 100644 --- a/bin/core/imag-store/src/ui.rs +++ b/bin/core/imag-store/src/ui.rs @@ -195,4 +195,15 @@ pub fn build_ui<'a>(app: App<'a, 'a>) -> App<'a, 'a> { .about("Dump the complete store to stdout. Currently does only support JSON") .version("0.1") ) + .subcommand(SubCommand::with_name("ids") + .about("List of Storeids") + .version("0.1") + .arg(Arg::with_name("full") + .long("full") + .short("F") + .takes_value(false) + .multiple(false) + .required(false) + .help("Print full filepath instead of storeid part")) + ) } diff --git a/doc/src/09020-changelog.md b/doc/src/09020-changelog.md index 974d94b6..8ab0270f 100644 --- a/doc/src/09020-changelog.md +++ b/doc/src/09020-changelog.md @@ -27,6 +27,7 @@ This section contains the changelog from the last release to the next release. browser or on the toaster. * The logger is now able to handle multiple destinations (file and "-" for stderr) + * `imag-store` can dump all storeids now ## 0.4.0