diff --git a/Cargo.toml b/Cargo.toml index 2d0dcb6a..a28bf2a3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,7 @@ members = [ "bin/core/imag-edit", "bin/core/imag-gps", "bin/core/imag-grep", + "bin/core/imag-ids", "bin/core/imag-init", "bin/core/imag-link", "bin/core/imag-mv", diff --git a/bin/core/imag-ids/Cargo.toml b/bin/core/imag-ids/Cargo.toml new file mode 100644 index 00000000..00177775 --- /dev/null +++ b/bin/core/imag-ids/Cargo.toml @@ -0,0 +1,33 @@ +[package] +name = "imag-ids" +version = "0.7.0" +authors = ["Matthias Beyer "] + +description = "Part of the imag core distribution: imag-ids command" + +keywords = ["imag", "PIM", "personal", "information", "management"] +readme = "../../../README.md" +license = "LGPL-2.1" + +documentation = "https://matthiasbeyer.github.io/imag/imag_documentation/index.html" +repository = "https://github.com/matthiasbeyer/imag" +homepage = "http://imag-pim.org" + +build = "../../../build.rs" + +[badges] +travis-ci = { repository = "matthiasbeyer/imag" } +is-it-maintained-issue-resolution = { repository = "matthiasbeyer/imag" } +is-it-maintained-open-issues = { repository = "matthiasbeyer/imag" } +maintenance = { status = "actively-developed" } + +[dependencies] +libimagstore = { version = "0.7.0", path = "../../../lib/core/libimagstore" } +libimagrt = { version = "0.7.0", path = "../../../lib/core/libimagrt" } +libimagerror = { version = "0.7.0", path = "../../../lib/core/libimagerror" } + +[dependencies.clap] +version = ">=2.29" +default-features = false +features = ["color", "suggestions"] + diff --git a/bin/core/imag-ids/src/main.rs b/bin/core/imag-ids/src/main.rs new file mode 100644 index 00000000..3b3a4638 --- /dev/null +++ b/bin/core/imag-ids/src/main.rs @@ -0,0 +1,74 @@ +// +// imag - the personal information management suite for the commandline +// Copyright (C) 2015-2018 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 +// + +#![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 libimagerror; +extern crate libimagstore; +#[macro_use] extern crate libimagrt; + +use std::io::Write; + +use clap::App; + +use libimagrt::setup::generate_runtime_setup; +use libimagerror::trace::MapErrTrace; +use libimagerror::exit::ExitUnwrap; +use libimagerror::io::ToExitCode; + + +/// No special CLI +pub fn build_ui<'a>(app: App<'a, 'a>) -> App<'a, 'a> { + app +} + +fn main() { + let version = make_imag_version!(); + let rt = generate_runtime_setup("imag-ids", + &version, + "print all ids", + build_ui); + + let mut out = ::std::io::stdout(); + + rt.store() + .entries() + .map_err_trace_exit_unwrap(1) + .for_each(|id| { + let _ = writeln!(out, "{}", id.to_str().map_err_trace_exit_unwrap(1)) + .to_exit_code() + .unwrap_or_exit(); + }) +} + diff --git a/bin/core/imag-store/src/ids.rs b/bin/core/imag-store/src/ids.rs deleted file mode 100644 index d64659c8..00000000 --- a/bin/core/imag-store/src/ids.rs +++ /dev/null @@ -1,47 +0,0 @@ -// -// imag - the personal information management suite for the commandline -// Copyright (C) 2015-2018 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 std::io::Write; - -use libimagrt::runtime::Runtime; -use libimagerror::trace::*; -use libimagerror::io::ToExitCode; -use libimagerror::exit::ExitUnwrap; - -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 _ = rt - .store() - .entries() - .map_err_trace_exit_unwrap(1) - .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_unwrap(1)) - .map(|i| writeln!(::std::io::stdout(), "{}", i)) - .collect::, ::std::io::Error>>() - .to_exit_code() - .unwrap_or_exit(); -} - diff --git a/bin/core/imag-store/src/main.rs b/bin/core/imag-store/src/main.rs index 2b16b047..60f80d1c 100644 --- a/bin/core/imag-store/src/main.rs +++ b/bin/core/imag-store/src/main.rs @@ -61,7 +61,6 @@ mod ui; mod update; mod verify; mod util; -mod ids; use std::ops::Deref; @@ -73,7 +72,6 @@ use retrieve::retrieve; use ui::build_ui; use update::update; use verify::verify; -use ids::ids; fn main() { let version = make_imag_version!(); @@ -94,7 +92,6 @@ 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 09de5117..b44665b7 100644 --- a/bin/core/imag-store/src/ui.rs +++ b/bin/core/imag-store/src/ui.rs @@ -195,15 +195,4 @@ 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 1d1ea8a8..8187fbe3 100644 --- a/doc/src/09020-changelog.md +++ b/doc/src/09020-changelog.md @@ -29,6 +29,7 @@ This section contains the changelog from the last release to the next release. Also because it used to put entries under a "ref" collection in the store, but users of the library really should be be able to put entries under custom collections. + * `imag store ids` was replaced by `imag ids`. * Minor changes * A license-checker was included into the CI setup, which checks whether all ".rs"-files have the license header at the top of the file diff --git a/scripts/release.sh b/scripts/release.sh index 2a285591..7eea233d 100644 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -52,6 +52,7 @@ CRATES=( ./bin/core/imag-view ./bin/core/imag-init ./bin/core/imag-edit + ./bin/core/imag-ids ./bin/core/imag )