Merge pull request #1299 from matthiasbeyer/imag-ids/init

imag-ids: init
This commit is contained in:
Matthias Beyer 2018-02-20 14:42:51 +01:00 committed by GitHub
commit 912a48cbfe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 110 additions and 61 deletions

View file

@ -6,6 +6,7 @@ members = [
"bin/core/imag-edit", "bin/core/imag-edit",
"bin/core/imag-gps", "bin/core/imag-gps",
"bin/core/imag-grep", "bin/core/imag-grep",
"bin/core/imag-ids",
"bin/core/imag-init", "bin/core/imag-init",
"bin/core/imag-link", "bin/core/imag-link",
"bin/core/imag-mv", "bin/core/imag-mv",

View file

@ -0,0 +1,33 @@
[package]
name = "imag-ids"
version = "0.7.0"
authors = ["Matthias Beyer <mail@beyermatthias.de>"]
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"]

View file

@ -0,0 +1,74 @@
//
// imag - the personal information management suite for the commandline
// Copyright (C) 2015-2018 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 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();
})
}

View file

@ -1,47 +0,0 @@
//
// imag - the personal information management suite for the commandline
// Copyright (C) 2015-2018 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 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::<Result<Vec<()>, ::std::io::Error>>()
.to_exit_code()
.unwrap_or_exit();
}

View file

@ -61,7 +61,6 @@ mod ui;
mod update; mod update;
mod verify; mod verify;
mod util; mod util;
mod ids;
use std::ops::Deref; use std::ops::Deref;
@ -73,7 +72,6 @@ use retrieve::retrieve;
use ui::build_ui; use ui::build_ui;
use update::update; use update::update;
use verify::verify; use verify::verify;
use ids::ids;
fn main() { fn main() {
let version = make_imag_version!(); let version = make_imag_version!();
@ -94,7 +92,6 @@ fn main() {
"update" => update(&rt), "update" => update(&rt),
"verify" => verify(&rt), "verify" => verify(&rt),
"dump" => dump(&mut rt), "dump" => dump(&mut rt),
"ids" => ids(&rt),
_ => { _ => {
debug!("Unknown command"); debug!("Unknown command");
// More error handling // More error handling

View file

@ -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") .about("Dump the complete store to stdout. Currently does only support JSON")
.version("0.1") .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"))
)
} }

View file

@ -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, 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 but users of the library really should be be able to put entries under
custom collections. custom collections.
* `imag store ids` was replaced by `imag ids`.
* Minor changes * Minor changes
* A license-checker was included into the CI setup, which checks whether all * 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 ".rs"-files have the license header at the top of the file

View file

@ -52,6 +52,7 @@ CRATES=(
./bin/core/imag-view ./bin/core/imag-view
./bin/core/imag-init ./bin/core/imag-init
./bin/core/imag-edit ./bin/core/imag-edit
./bin/core/imag-ids
./bin/core/imag ./bin/core/imag
) )