~matthiasbeyer/imag

e12ee775ada7ca26d715501336ba7d1af665eea1 — Matthias Beyer 1 year, 3 months ago 1c5a81d + 02604ae
Merge branch 'replace-map-dbg-err' into master

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
M bin/domain/imag-diary/Cargo.toml => bin/domain/imag-diary/Cargo.toml +1 -0
@@ 27,6 27,7 @@ toml-query = "0.9.2"
itertools = "0.8.0"
failure = "0.1.5"
resiter = "0.4.0"
option-inspect = "0.1.0"

libimagerror       = { version = "0.10.0", path = "../../../lib/core/libimagerror" }
libimagstore       = { version = "0.10.0", path = "../../../lib/core/libimagstore" }

M bin/domain/imag-diary/src/create.rs => bin/domain/imag-diary/src/create.rs +4 -4
@@ 25,11 25,11 @@ use failure::Error;
use failure::ResultExt;
use failure::err_msg;
use failure::Fallible as Result;
use option_inspect::*;

use libimagdiary::diary::Diary;
use libimagentryedit::edit::Edit;
use libimagrt::runtime::Runtime;
use libimagutil::debug_option::DebugOption;
use libimagstore::store::FileLockEntry;
use libimagstore::store::Store;



@@ 103,7 103,7 @@ fn create_id_from_clispec(create: &ArgMatches, timed_type: Timed) -> Result<Naiv
        Timed::Minutely => {
            let min = create
                .value_of("minute")
                .map_dbg(|m| format!("minute = {:?}", m))
                .inspect(|m| debug!("minute = {:?}", m))
                .map(|s| {
                    FromStr::from_str(s)
                        .map_err(Error::from)


@@ 123,7 123,7 @@ fn create_id_from_clispec(create: &ArgMatches, timed_type: Timed) -> Result<Naiv
        Timed::Secondly => {
            let min = create
                .value_of("minute")
                .map_dbg(|m| format!("minute = {:?}", m))
                .inspect(|m| debug!("minute = {:?}", m))
                .map(|s| {
                    FromStr::from_str(s)
                        .map_err(Error::from)


@@ 135,7 135,7 @@ fn create_id_from_clispec(create: &ArgMatches, timed_type: Timed) -> Result<Naiv

            let sec = create
                .value_of("second")
                .map_dbg(|s| format!("second = {:?}", s))
                .inspect(|s| debug!("second = {:?}", s))
                .map(|s| {
                    FromStr::from_str(s)
                        .map_err(Error::from)

M bin/domain/imag-diary/src/lib.rs => bin/domain/imag-diary/src/lib.rs +1 -0
@@ 42,6 42,7 @@ extern crate chrono;
extern crate toml;
extern crate toml_query;
extern crate itertools;
extern crate option_inspect;

extern crate libimagdiary;
extern crate libimagentryedit;

M bin/domain/imag-diary/src/list.rs => bin/domain/imag-diary/src/list.rs +1 -3
@@ 26,7 26,6 @@ use resiter::AndThen;

use libimagdiary::diary::Diary;
use libimagrt::runtime::Runtime;
use libimagutil::debug_result::*;
use libimagdiary::diaryid::DiaryId;
use libimagdiary::diaryid::FromStoreId;
use libimagstore::storeid::IntoStoreId;


@@ 37,8 36,7 @@ pub fn list(rt: &Runtime) -> Result<()> {
    let diaryname = get_diary_name(rt)
        .ok_or_else(|| err_msg("No diary selected. Use either the configuration file or the commandline option"))?;

    let mut ids = Diary::entries(rt.store(), &diaryname)
        .map_dbg_str("Ok")?
    let mut ids = Diary::entries(rt.store(), &diaryname)?
        .and_then_ok(|id| DiaryId::from_storeid(&id))
        .collect::<Result<Vec<_>>>()?;


M bin/domain/imag-habit/Cargo.toml => bin/domain/imag-habit/Cargo.toml +1 -0
@@ 28,6 28,7 @@ kairos = "0.3.0"
prettytable-rs = "0.8.0"
failure = "0.1.5"
resiter = "0.4.0"
result-inspect = "0.1"

libimagerror       = { version = "0.10.0", path = "../../../lib/core/libimagerror" }
libimagstore       = { version = "0.10.0", path = "../../../lib/core/libimagstore" }

M bin/domain/imag-habit/src/lib.rs => bin/domain/imag-habit/src/lib.rs +3 -2
@@ 43,6 43,7 @@ extern crate resiter;
extern crate chrono;
extern crate prettytable;
#[macro_use] extern crate failure;
extern crate result_inspect;

extern crate libimaghabit;
extern crate libimagstore;


@@ 65,6 66,7 @@ use resiter::Filter;
use resiter::IterInnerOkOrElse;
use clap::App;
use chrono::NaiveDate;
use result_inspect::*;

use libimagrt::runtime::Runtime;
use libimagrt::application::ImagApplication;


@@ 74,7 76,6 @@ use libimaghabit::habit::HabitTemplate;
use libimagstore::store::FileLockEntry;
use libimagstore::iter::get::StoreIdGetIteratorExtension;
use libimaginteraction::ask::ask_bool;
use libimagutil::debug_result::DebugResult;


mod ui;


@@ 133,7 134,7 @@ fn create(rt: &Runtime) -> Result<()> {

    let parsedate = |d, pname| match kairos_parse(d)? {
        Parsed::TimeType(tt) => tt.calculate()
            .map_dbg(|y| format!("TimeType yielded: '{:?}'", y))?
            .inspect(|y| debug!("TimeType yielded: '{:?}'", y))?
            .get_moment()
            .ok_or_else(|| {
                format_err!("Error: '{}' parameter does not yield a point in time", pname)

M lib/core/libimagrt/src/runtime.rs => lib/core/libimagrt/src/runtime.rs +1 -2
@@ 44,7 44,6 @@ use libimagerror::errors::ErrorMsg as EM;
use libimagerror::trace::*;
use libimagstore::store::Store;
use libimagstore::storeid::StoreId;
use libimagutil::debug_result::DebugResult;
use crate::spec::CliSpec;
use atty;



@@ 384,8 383,8 @@ impl<'a> Runtime<'a> {
            })
            .or_else(|_| env::var("EDITOR"))
            .map_err(|_| Error::from(EM::IO))
            .map_dbg(|s| format!("Editing with '{}'", s))
            .and_then(|s| {
                debug!("Editing with '{}'", s);
                let mut split = s.split_whitespace();
                let command   = split.next();
                if command.is_none() {

M lib/core/libimagstore/src/store.rs => lib/core/libimagstore/src/store.rs +1 -5
@@ 47,9 47,6 @@ use crate::file_abstraction::FileAbstractionInstance;
use crate::file_abstraction::fs::FSFileAbstraction;
use crate::file_abstraction::inmemory::InMemoryFileAbstraction;

use libimagutil::debug_result::*;


#[derive(Debug, PartialEq)]
enum StoreEntryStatus {
    Present,


@@ 199,8 196,7 @@ impl Store {

            backend
                .create_dir_all(&location)
                .context(format_err!("StorePathCreate: {}", location.display()))
                .map_dbg_err_str("Failed")?;
                .context(format_err!("StorePathCreate: {}", location.display()))?;
        } else if location.is_file() {
            debug!("Store path exists as file");
            return Err(format_err!("StorePathExists: {}", location.display()));

M lib/domain/libimaghabit/src/habit.rs => lib/domain/libimaghabit/src/habit.rs +6 -10
@@ 270,7 270,6 @@ pub mod builder {
    use libimagstore::storeid::StoreId;
    use libimagstore::store::FileLockEntry;
    use libimagentryutil::isa::Is;
    use libimagutil::debug_result::DebugResult;

    use failure::Error;
    use failure::Fallible as Result;


@@ 321,17 320,14 @@ pub mod builder {
                format_err!("Habit builder missing: {}", s)
            }

            let name = self.name
                .ok_or_else(|| mkerr("name"))
                .map_dbg_str("Success: Name present")?;
            let name = self.name.ok_or_else(|| mkerr("name"))?;
            debug!("Success: Name present");

            let dateobj = self.basedate
                .ok_or_else(|| mkerr("date"))
                .map_dbg_str("Success: Date present")?;
            let dateobj = self.basedate.ok_or_else(|| mkerr("date"))?;
            debug!("Success: Date present");

            let recur : String = self.recurspec
                .ok_or_else(|| mkerr("recurspec"))
                .map_dbg_str("Success: Recurr spec present")?;
            let recur : String = self.recurspec.ok_or_else(|| mkerr("recurspec"))?;
            debug!("Success: Recurr spec present");

            if let Some(until) = self.untildate {
                debug!("Success: Until-Date present");

M lib/entry/libimagentrylink/src/storecheck.rs => lib/entry/libimagentrylink/src/storecheck.rs +13 -24
@@ 21,7 21,6 @@ use std::collections::HashMap;

use libimagstore::store::Store;
use libimagstore::storeid::StoreId;
use libimagutil::debug_result::DebugResult;

use failure::ResultExt;
use failure::Fallible as Result;


@@ 145,29 144,19 @@ impl StoreLinkConsistentExt for Store {
                Ok(())
            };

        aggregate_link_network(&self)
            .map_dbg_str("Aggregated")
            .map_dbg(|nw| {
                let mut s = String::new();
                for (k, v) in nw {
                    s.push_str(&format!("{}\n in: {:?}\n out: {:?}", k, v.incoming, v.outgoing));
                }
                s
            })
            .and_then(|nw| {
                all_collected_storeids_exist(&nw)
                    .map(|_| nw)
                    .context(err_msg("Link handling error"))
                    .map_err(Error::from)
            })
            .and_then(|nw| {
                for (id, linking) in nw.iter() {
                    incoming_links_exists_as_outgoing_links(id, linking, &nw)?;
                    outgoing_links_exist_as_incoming_links(id, linking, &nw)?;
                }
                Ok(())
            })
            .map(|_| ())
        let nw = aggregate_link_network(&self)?;

        for (k, v) in nw.iter() {
            debug!("{}\n in: {:?}\n out: {:?}", k, v.incoming, v.outgoing);
        }

        all_collected_storeids_exist(&nw).context("Link handling error")?;

        for (id, linking) in nw.iter() {
            incoming_links_exists_as_outgoing_links(id, linking, &nw)?;
            outgoing_links_exist_as_incoming_links(id, linking, &nw)?;
        }
        Ok(())
    }
}


M lib/entry/libimagentryurl/src/iter.rs => lib/entry/libimagentryurl/src/iter.rs +6 -4
@@ 32,9 32,10 @@
use libimagentrylink::link::Link;
use libimagentrylink::iter::LinkIter;
use libimagstore::store::Store;
use libimagutil::debug_result::DebugResult;

use failure::Fallible as Result;
use failure::ResultExt;
use failure::Error;
use url::Url;

/// Helper for building `OnlyUrlIter` and `NoUrlIter`


@@ 170,14 171,15 @@ impl<'a> Iterator for UrlIter<'a> {
                    debug!("Retrieving entry for id: '{:?}'", id);
                    self.1
                        .retrieve(id.clone())
                        .map_dbg_err(|_| format!("Retrieving entry for id: '{:?}' failed", id))
                        .with_context(|e| format!("Retrieving entry for id: '{:?}' failed: {}", id, e))
                        .map_err(From::from)
                        .and_then(|f| {
                            debug!("Store::retrieve({:?}) succeeded", id);
                            debug!("getting uri link from file now");
                            f.get_url()
                                .map_dbg_str("Error happened while getting link URI from FLE")
                                .map_dbg_err(|e| format!("URL -> Err = {:?}", e))
                                .context("Error happened while getting link URI from FLE")
                                .with_context(|e| format!("URL -> Err = {:?}", e))
                                .map_err(Error::from)
                        })
                });


M lib/entry/libimagentryurl/src/linker.rs => lib/entry/libimagentryurl/src/linker.rs +3 -5
@@ 20,10 20,10 @@
use libimagstore::storeid::StoreId;
use libimagstore::store::Store;
use libimagstore::store::Entry;
use libimagutil::debug_result::DebugResult;
use libimagentrylink::linkable::Linkable;

use failure::Fallible as Result;
use failure::ResultExt;
use url::Url;
use sha1::{Sha1, Digest};
use hex;


@@ 93,7 93,7 @@ impl UrlLinker for Entry {
        links.into_iter().map(|link| {
            let hash = hex::encode(Sha1::digest(&link.as_str().as_bytes()));
            let file_id = crate::module_path::new_id(hash.clone())
                .map_dbg_err(|_| format!("Failed to build StoreId for this hash '{:?}'", hash))?;
                .with_context(|e| format!("Failed to build StoreId for this hash '{:?}': {}", hash, e))?;

            debug!("Link    = '{:?}'", link);
            debug!("Hash    = '{:?}'", hash);


@@ 105,9 105,7 @@ impl UrlLinker for Entry {
            // exist
            let mut file = store
                .retrieve(file_id.clone())
                .map_dbg_err(|_| {
                    format!("Failed to create or retrieve an file for this link '{:?}'", link)
                })?;
                .with_context(|e| format!("Failed to create or retrieve an file for this link '{:?}': {}", link, e))?;

            debug!("Generating header content!");
            file.set_url(link)?;

D lib/etc/libimagutil/src/debug_option.rs => lib/etc/libimagutil/src/debug_option.rs +0 -28
@@ 1,28 0,0 @@
//
// imag - the personal information management suite for the commandline
// Copyright (C) 2015-2019 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
//

// Generates a extension for the `Option<T>`, named `DebugOption` which has functionality to
// print `T` via `debug!()`.
generate_option_logging_extension!(
    DebugOption,
    map_dbg,
    map_dbg_str,
    |s| { debug!("{}", s); }
);


D lib/etc/libimagutil/src/debug_result.rs => lib/etc/libimagutil/src/debug_result.rs +0 -29
@@ 1,29 0,0 @@
//
// imag - the personal information management suite for the commandline
// Copyright (C) 2015-2019 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
//

// Generates a extension for the `Result<T, E>`, named `DebugResult` which has functionality to
// print either `T` or `E` via `debug!()`.
generate_result_logging_extension!(
    DebugResult,
    map_dbg,
    map_dbg_str,
    map_dbg_err,
    map_dbg_err_str,
    |s| { debug!("{}", s); }
);

M lib/etc/libimagutil/src/lib.rs => lib/etc/libimagutil/src/lib.rs +0 -2
@@ 47,8 47,6 @@ extern crate chrono;
#[macro_use] mod log_option;
pub mod cli_validators;
pub mod date;
pub mod debug_result;
pub mod debug_option;
pub mod edit;
pub mod info_result;
pub mod info_option;