summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bin/core/imag-ref/Cargo.toml1
-rw-r--r--bin/core/imag-ref/src/main.rs1
-rw-r--r--bin/domain/imag-diary/Cargo.toml1
-rw-r--r--bin/domain/imag-diary/src/list.rs53
-rw-r--r--bin/domain/imag-diary/src/main.rs1
-rw-r--r--bin/domain/imag-habit/Cargo.toml2
-rw-r--r--bin/domain/imag-habit/src/main.rs99
-rw-r--r--lib/entry/libimagentryref/Cargo.toml1
-rw-r--r--lib/entry/libimagentryref/src/lib.rs1
9 files changed, 90 insertions, 70 deletions
diff --git a/bin/core/imag-ref/Cargo.toml b/bin/core/imag-ref/Cargo.toml
index 9a0b2dae..d42ffaaa 100644
--- a/bin/core/imag-ref/Cargo.toml
+++ b/bin/core/imag-ref/Cargo.toml
@@ -28,7 +28,6 @@ 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" }
libimagentryref = { version = "0.7.0", path = "../../../lib/entry/libimagentryref" }
-libimagentrylist = { version = "0.7.0", path = "../../../lib/entry/libimagentrylist" }
libimaginteraction = { version = "0.7.0", path = "../../../lib/etc/libimaginteraction" }
libimagutil = { version = "0.7.0", path = "../../../lib/etc/libimagutil" }
diff --git a/bin/core/imag-ref/src/main.rs b/bin/core/imag-ref/src/main.rs
index ce24b2f3..d806ff95 100644
--- a/bin/core/imag-ref/src/main.rs
+++ b/bin/core/imag-ref/src/main.rs
@@ -39,7 +39,6 @@ extern crate libimagstore;
#[macro_use] extern crate libimagrt;
extern crate libimagentryref;
extern crate libimagerror;
-extern crate libimagentrylist;
extern crate libimaginteraction;
extern crate libimagutil;
diff --git a/bin/domain/imag-diary/Cargo.toml b/bin/domain/imag-diary/Cargo.toml
index 35f81803..9ebfb820 100644
--- a/bin/domain/imag-diary/Cargo.toml
+++ b/bin/domain/imag-diary/Cargo.toml
@@ -32,7 +32,6 @@ libimagstore = { version = "0.7.0", path = "../../../lib/core/libimagstore
libimagrt = { version = "0.7.0", path = "../../../lib/core/libimagrt" }
libimagdiary = { version = "0.7.0", path = "../../../lib/domain/libimagdiary" }
libimagentryedit = { version = "0.7.0", path = "../../../lib/entry/libimagentryedit" }
-libimagentrylist = { version = "0.7.0", path = "../../../lib/entry/libimagentrylist" }
libimaginteraction = { version = "0.7.0", path = "../../../lib/etc/libimaginteraction" }
libimagutil = { version = "0.7.0", path = "../../../lib/etc/libimagutil" }
libimagtimeui = { version = "0.7.0", path = "../../../lib/etc/libimagtimeui" }
diff --git a/bin/domain/imag-diary/src/list.rs b/bin/domain/imag-diary/src/list.rs
index cb81ed20..99409d3c 100644
--- a/bin/domain/imag-diary/src/list.rs
+++ b/bin/domain/imag-diary/src/list.rs
@@ -17,15 +17,14 @@
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
//
+use std::io::Write;
+
use libimagdiary::diary::Diary;
-use libimagdiary::error::DiaryErrorKind as DEK;
-use libimagdiary::error::ResultExt;
-use libimagentrylist::listers::core::CoreLister;
-use libimagentrylist::lister::Lister;
use libimagrt::runtime::Runtime;
-use libimagstore::store::Entry;
use libimagutil::warn_exit::warn_exit;
use libimagerror::trace::MapErrTrace;
+use libimagerror::io::ToExitCode;
+use libimagerror::exit::ExitUnwrap;
use libimagutil::debug_result::*;
use util::get_diary_name;
@@ -34,33 +33,27 @@ pub fn list(rt: &Runtime) {
let diaryname = get_diary_name(rt)
.unwrap_or_else(|| warn_exit("No diary selected. Use either the configuration file or the commandline option", 1));
- fn entry_to_location_listing_string(e: &Entry) -> String {
- e.get_location().clone()
- .without_base()
- .to_str()
- .map_err_trace()
- .unwrap_or(String::from("<<Path Parsing Error>>"))
- }
+ let mut out = ::std::io::stdout();
Diary::entries(rt.store(), &diaryname)
- .and_then(|es| {
- debug!("Iterator for listing: {:?}", es);
-
- let es = es
- .filter_map(|entry| {
- entry
- .map_dbg(|e| format!("Filtering: {:?}", e))
- .map_err_trace() // error tracing here
- .ok() // so we can ignore errors here
- })
- .map(|e| e.into());
-
- CoreLister::new(&entry_to_location_listing_string)
- .list(es)
- .chain_err(|| DEK::IOError)
- })
.map_dbg_str("Ok")
- .map_err_trace()
- .ok();
+ .map_err_trace_exit_unwrap(1)
+ .filter_map(|entry| {
+ entry
+ .map_dbg(|e| format!("Filtering: {:?}", e))
+ .map_err_trace() // error tracing here
+ .ok() // so we can ignore errors here
+ })
+ .for_each(|e| {
+ writeln!(out, "{}", e
+ .get_location()
+ .clone()
+ .without_base()
+ .to_str()
+ .map_err_trace()
+ .unwrap_or(String::from("<<Path Parsing Error>>")))
+ .to_exit_code()
+ .unwrap_or_exit();
+ })
}
diff --git a/bin/domain/imag-diary/src/main.rs b/bin/domain/imag-diary/src/main.rs
index 0fcaf9d7..bbd443d2 100644
--- a/bin/domain/imag-diary/src/main.rs
+++ b/bin/domain/imag-diary/src/main.rs
@@ -40,7 +40,6 @@ extern crate toml_query;
extern crate libimagdiary;
extern crate libimagentryedit;
-extern crate libimagentrylist;
extern crate libimagerror;
extern crate libimaginteraction;
#[macro_use] extern crate libimagrt;
diff --git a/bin/domain/imag-habit/Cargo.toml b/bin/domain/imag-habit/Cargo.toml
index 56bf6622..4e144ab0 100644
--- a/bin/domain/imag-habit/Cargo.toml
+++ b/bin/domain/imag-habit/Cargo.toml
@@ -27,12 +27,12 @@ log = "0.3"
toml = "0.4"
toml-query = "0.6"
kairos = "0.1.0"
+prettytable-rs = "0.6"
libimagerror = { version = "0.7.0", path = "../../../lib/core/libimagerror" }
libimagstore = { version = "0.7.0", path = "../../../lib/core/libimagstore" }
libimagrt = { version = "0.7.0", path = "../../../lib/core/libimagrt" }
libimagentryedit = { version = "0.7.0", path = "../../../lib/entry/libimagentryedit" }
-libimagentrylist = { version = "0.7.0", path = "../../../lib/entry/libimagentrylist" }
libimaginteraction = { version = "0.7.0", path = "../../../lib/etc/libimaginteraction" }
libimagutil = { version = "0.7.0", path = "../../../lib/etc/libimagutil" }
libimagtimeui = { version = "0.7.0", path = "../../../lib/etc/libimagtimeui" }
diff --git a/bin/domain/imag-habit/src/main.rs b/bin/domain/imag-habit/src/main.rs
index bcce7459..8594dfbe 100644
--- a/bin/domain/imag-habit/src/main.rs
+++ b/bin/domain/imag-habit/src/main.rs
@@ -38,18 +38,22 @@ extern crate toml;
extern crate toml_query;
extern crate kairos;
extern crate chrono;
+extern crate prettytable;
extern crate libimaghabit;
extern crate libimagstore;
#[macro_use] extern crate libimagrt;
extern crate libimagerror;
extern crate libimagutil;
-extern crate libimagentrylist;
extern crate libimaginteraction;
use std::io::Write;
use std::process::exit;
+use prettytable::Table;
+use prettytable::cell::Cell;
+use prettytable::row::Row;
+
use libimagrt::runtime::Runtime;
use libimagrt::setup::generate_runtime_setup;
use libimagerror::trace::{MapErrTrace, trace_error};
@@ -61,8 +65,6 @@ use libimaghabit::habit::HabitTemplate;
use libimagstore::store::FileLockEntry;
use libimagstore::store::Store;
use libimagstore::storeid::StoreId;
-use libimagentrylist::listers::table::TableLister;
-use libimagentrylist::lister::Lister;
use libimaginteraction::ask::ask_bool;
mod ui;
@@ -312,17 +314,27 @@ fn today(rt: &Runtime, future: bool) {
v
}
- fn lister_header() -> Vec<String> {
- ["Name", "Basedate", "Recurr", "Next Due", "Comment"]
- .iter().map(|x| String::from(*x)).collect()
+ let header = ["#", "Name", "Basedate", "Recurr", "Next Due", "Comment"]
+ .iter()
+ .map(|s| Cell::new(s))
+ .collect::<Vec<Cell>>();
+
+ let mut table = Table::new();
+ table.set_titles(Row::new(header));
+
+ let mut empty = true;
+ for (i, e) in relevant.into_iter().enumerate() {
+ let mut v = vec![format!("{}", i)];
+ let mut list = lister_fn(&e);
+ v.append(&mut list);
+ table.add_row(v.iter().map(|s| Cell::new(s)).collect());
+ empty = false;
}
- TableLister::new(lister_fn)
- .with_header(lister_header())
- .with_idx(true)
- .print_empty(false)
- .list(relevant.into_iter())
- .map_err_trace_exit_unwrap(1);
+ if !empty {
+ let mut out = ::std::io::stdout();
+ let _ = table.print(&mut out).to_exit_code().unwrap_or_exit();
+ }
}
}
@@ -342,11 +354,16 @@ fn list(rt: &Runtime) {
v
}
- fn lister_header() -> Vec<String> {
- ["Name", "Basedate", "Recurr", "Comment", "Next Due"].iter().map(|x| String::from(*x)).collect()
- }
+ let header = ["#", "Name", "Basedate", "Recurr", "Comment", "Next Due"]
+ .iter()
+ .map(|s| Cell::new(s))
+ .collect::<Vec<Cell>>();
- let iter = rt
+ let mut empty = true;
+ let mut table = Table::new();
+ table.set_titles(Row::new(header));
+
+ let _ = rt
.store()
.all_habit_templates()
.map_err_trace_exit_unwrap(1)
@@ -360,15 +377,20 @@ fn list(rt: &Runtime) {
trace_error(&e);
None
},
+ })
+ .enumerate()
+ .for_each(|(i, e)| {
+ let mut v = vec![format!("{}", i)];
+ let mut list = lister_fn(&e);
+ v.append(&mut list);
+ table.add_row(v.iter().map(|s| Cell::new(s)).collect());
+ empty = false;
});
-
- TableLister::new(lister_fn)
- .with_header(lister_header())
- .with_idx(true)
- .print_empty(false)
- .list(iter)
- .map_err_trace_exit_unwrap(1);
+ if !empty {
+ let mut out = ::std::io::stdout();
+ let _ = table.print(&mut out).to_exit_code().unwrap_or_exit();
+ }
}
fn show(rt: &Runtime) {
@@ -378,9 +400,6 @@ fn show(rt: &Runtime) {
.map(String::from)
.unwrap(); // safe by clap
- fn instance_lister_header() -> Vec<String> {
- ["Date", "Comment"].iter().map(|x| String::from(*x)).collect()
- }
fn instance_lister_fn(i: &FileLockEntry) -> Vec<String> {
use libimagutil::date::date_to_string;
@@ -393,6 +412,13 @@ fn show(rt: &Runtime) {
}
let mut out = ::std::io::stdout();
+ let header = ["#", "Date", "Comment"]
+ .iter()
+ .map(|s| Cell::new(s))
+ .collect::<Vec<Cell>>();
+
+ let mut table = Table::new();
+ table.set_titles(Row::new(header));
let _ = rt
.store()
@@ -417,20 +443,27 @@ fn show(rt: &Runtime) {
.to_exit_code()
.unwrap_or_exit();
- let instances_iter = habit
+ let mut empty = true;
+ let _ = habit
.linked_instances()
.map_err_trace_exit_unwrap(1)
.filter_map(|instance_id| {
debug!("Getting: {:?}", instance_id);
rt.store().get(instance_id).map_err_trace_exit_unwrap(1)
+ })
+ .enumerate()
+ .for_each(|(i, e)| {
+ let mut v = vec![format!("{}", i)];
+ let mut instances = instance_lister_fn(&e);
+ v.append(&mut instances);
+ table.add_row(v.iter().map(|s| Cell::new(s)).collect());
+ empty = false;
});
- TableLister::new(instance_lister_fn)
- .with_header(instance_lister_header())
- .with_idx(true)
- .print_empty(false)
- .list(instances_iter)
- .map_err_trace_exit_unwrap(1);
+ if !empty {
+ let mut out = ::std::io::stdout();
+ let _ = table.print(&mut out).to_exit_code().unwrap_or_exit();
+ }
})
.collect::<Vec<_>>();
}
diff --git a/lib/entry/libimagentryref/Cargo.toml b/lib/entry/libimagentryref/Cargo.toml
index 46178af7..fce0898c 100644
--- a/lib/entry/libimagentryref/Cargo.toml
+++ b/lib/entry/libimagentryref/Cargo.toml
@@ -28,7 +28,6 @@ error-chain = "0.11"
libimagstore = { version = "0.7.0", path = "../../../lib/core/libimagstore" }
libimagerror = { version = "0.7.0", path = "../../../lib/core/libimagerror" }
-libimagentrylist = { version = "0.7.0", path = "../../../lib/entry/libimagentrylist" }
libimagentryutil = { version = "0.7.0", path = "../../../lib/entry/libimagentryutil" }
[dependencies.rust-crypto]
diff --git a/lib/entry/libimagentryref/src/lib.rs b/lib/entry/libimagentryref/src/lib.rs
index 39f3c546..a9656d92 100644
--- a/lib/entry/libimagentryref/src/lib.rs
+++ b/lib/entry/libimagentryref/src/lib.rs
@@ -42,7 +42,6 @@ extern crate toml_query;
#[macro_use] extern crate libimagstore;
extern crate libimagerror;
-extern crate libimagentrylist;
#[macro_use] extern crate libimagentryutil;
#[macro_use] extern crate error_chain;