summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2017-10-09 15:10:59 +0200
committerGitHub <noreply@github.com>2017-10-09 15:10:59 +0200
commitac704cab76b22afea7af0367aa83dbb0bee103f4 (patch)
tree56439af2e57e7d37e72e80a7eeef2cbe8d8a883a
parent75a8041c0ea491789da0f1971105bf57d5945360 (diff)
parent1f84643486cecc1c5a0a96e4a49d007ca2d9bb22 (diff)
downloadimag-ac704cab76b22afea7af0367aa83dbb0bee103f4.zip
imag-ac704cab76b22afea7af0367aa83dbb0bee103f4.tar.gz
Merge pull request #1126 from asuivelentine/imag-store/id-dump
Dump all StoreIds
-rw-r--r--bin/core/imag-store/src/ids.rs42
-rw-r--r--bin/core/imag-store/src/main.rs3
-rw-r--r--bin/core/imag-store/src/ui.rs11
-rw-r--r--doc/src/09020-changelog.md1
4 files changed, 57 insertions, 0 deletions
diff --git a/bin/core/imag-store/src/ids.rs b/bin/core/imag-store/src/ids.rs
new file mode 100644
index 0000000..7c7f542
--- /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 <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
+//
+
+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 572f9e0..a997654 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 73b259b..af5d907 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 974d94b..8ab0270 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