diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2017-10-01 12:11:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-01 12:11:30 +0200 |
commit | 19b5b53b2add5a2a123f4737aeab24be7922e8e8 (patch) | |
tree | 1854b20fd0bc9b9b0e0408f10435e0942f570a73 | |
parent | 389f24d51f720392230dbe844c4b224f33ae7bf4 (diff) | |
parent | c5ad59e96fa694d11aae1d21ed342ba91484bb4e (diff) | |
download | imag-19b5b53b2add5a2a123f4737aeab24be7922e8e8.zip imag-19b5b53b2add5a2a123f4737aeab24be7922e8e8.tar.gz |
Merge pull request #1121 from matthiasbeyer/imag-mv
Initial import of imag-mv
-rw-r--r-- | Cargo.toml | 1 | ||||
-rw-r--r-- | bin/core/imag-mv/Cargo.toml | 24 | ||||
-rw-r--r-- | bin/core/imag-mv/src/main.rs | 84 | ||||
-rw-r--r-- | bin/core/imag-mv/src/ui.rs | 39 | ||||
-rw-r--r-- | doc/src/09020-changelog.md | 1 |
5 files changed, 149 insertions, 0 deletions
@@ -4,6 +4,7 @@ members = [ "bin/core/imag-gps", "bin/core/imag-grep", "bin/core/imag-link", + "bin/core/imag-mv", "bin/core/imag-ref", "bin/core/imag-store", "bin/core/imag-tag", diff --git a/bin/core/imag-mv/Cargo.toml b/bin/core/imag-mv/Cargo.toml new file mode 100644 index 0000000..d3eaf1d --- /dev/null +++ b/bin/core/imag-mv/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "imag-mv" +version = "0.5.0" +authors = ["Matthias Beyer <mail@beyermatthias.de>"] + +description = "Part of the imag core distribution: imag 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" + +[dependencies] +version = "2.0" +clap = ">=2.17" +log = "0.3" + +libimagrt = { version = "0.5.0", path = "../../../lib/core/libimagrt" } +libimagerror = { version = "0.5.0", path = "../../../lib/core/libimagerror" } +libimagstore = { version = "0.5.0", path = "../../../lib/core/libimagstore" } + diff --git a/bin/core/imag-mv/src/main.rs b/bin/core/imag-mv/src/main.rs new file mode 100644 index 0000000..e14411e --- /dev/null +++ b/bin/core/imag-mv/src/main.rs @@ -0,0 +1,84 @@ +// +// 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 +// + +#![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, +)] + +#[macro_use] extern crate log; +#[macro_use] extern crate version; +extern crate clap; + +extern crate libimagrt; +extern crate libimagstore; +extern crate libimagerror; + +mod ui; +use ui::build_ui; + +use std::path::PathBuf; + +use libimagrt::setup::generate_runtime_setup; +use libimagerror::trace::MapErrTrace; +use libimagstore::storeid::StoreId; + +fn main() { + let rt = generate_runtime_setup("imag-mv", + &version!()[..], + "Move things around in the store", + build_ui); + + debug!("mv"); + + let sourcename = rt + .cli() + .value_of("source") + .map(PathBuf::from) + .map(StoreId::new_baseless) + .unwrap() // unwrap safe by clap + .map_err_trace_exit(1) + .unwrap(); //secures by above call + + let destname = rt + .cli() + .value_of("dest") + .map(PathBuf::from) + .map(StoreId::new_baseless) + .unwrap() // unwrap safe by clap + .map_err_trace_exit(1) + .unwrap(); //secures by above call + + let _ = rt + .store() + .move_by_id(sourcename, destname) + .map_err_trace_exit(1); + + info!("Ok."); +} diff --git a/bin/core/imag-mv/src/ui.rs b/bin/core/imag-mv/src/ui.rs new file mode 100644 index 0000000..518683e --- /dev/null +++ b/bin/core/imag-mv/src/ui.rs @@ -0,0 +1,39 @@ +// +// 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 clap::{Arg, App}; + +pub fn build_ui<'a>(app: App<'a, 'a>) -> App<'a, 'a> { + app + .arg(Arg::with_name("source") + .index(1) + .takes_value(true) + .required(true) + .multiple(false) + .help("Source file") + .value_name("ENTRY")) + + .arg(Arg::with_name("dest") + .index(2) + .takes_value(true) + .required(true) + .multiple(false) + .help("Destination name file") + .value_name("DEST")) +} diff --git a/doc/src/09020-changelog.md b/doc/src/09020-changelog.md index f9b1520..0b4b20a 100644 --- a/doc/src/09020-changelog.md +++ b/doc/src/09020-changelog.md @@ -20,6 +20,7 @@ This section contains the changelog from the last release to the next release. * Major changes * `imag-counter` and `libimagcounter` was removed. + * `imag-mv` was introduced ## 0.4.0 |