Fix: imag-log show should order by datetime

This commit is contained in:
Matthias Beyer 2018-04-22 14:33:53 +02:00
parent 495ad62be6
commit ee75d2309c
3 changed files with 32 additions and 27 deletions

View file

@ -26,6 +26,7 @@ log = "0.3"
toml = "0.4" toml = "0.4"
toml-query = "0.6" toml-query = "0.6"
is-match = "0.1" is-match = "0.1"
itertools = "0.7"
libimagstore = { version = "0.8.0", path = "../../../lib/core/libimagstore" } libimagstore = { version = "0.8.0", path = "../../../lib/core/libimagstore" }
libimagrt = { version = "0.8.0", path = "../../../lib/core/libimagrt" } libimagrt = { version = "0.8.0", path = "../../../lib/core/libimagrt" }

View file

@ -37,6 +37,7 @@ extern crate clap;
#[macro_use] extern crate log; #[macro_use] extern crate log;
extern crate toml; extern crate toml;
extern crate toml_query; extern crate toml_query;
extern crate itertools;
extern crate libimaglog; extern crate libimaglog;
#[macro_use] extern crate libimagrt; #[macro_use] extern crate libimagrt;
@ -51,6 +52,7 @@ use libimagrt::setup::generate_runtime_setup;
use libimagerror::trace::MapErrTrace; use libimagerror::trace::MapErrTrace;
use libimagerror::io::ToExitCode; use libimagerror::io::ToExitCode;
use libimagerror::exit::ExitUnwrap; use libimagerror::exit::ExitUnwrap;
use libimagerror::iter::TraceIterator;
use libimagdiary::diary::Diary; use libimagdiary::diary::Diary;
use libimaglog::log::Log; use libimaglog::log::Log;
use libimaglog::error::LogError as LE; use libimaglog::error::LogError as LE;
@ -60,6 +62,7 @@ mod ui;
use ui::build_ui; use ui::build_ui;
use toml::Value; use toml::Value;
use itertools::Itertools;
fn main() { fn main() {
let version = make_imag_version!(); let version = make_imag_version!();
@ -126,33 +129,34 @@ fn show(rt: &Runtime) {
}; };
for iter in iters { for iter in iters {
let _ = iter.into_get_iter(rt.store()).map(|element| { let _ = iter
let e = element.map_err_trace_exit_unwrap(1); .into_get_iter(rt.store())
.trace_unwrap_exit(1)
.filter_map(|opt| {
if opt.is_none() {
warn!("Failed to retrieve an entry from an existing store id");
}
if e.is_none() { opt
warn!("Failed to retrieve an entry from an existing store id"); })
return Ok(()) .filter(|e| e.is_log().map_err_trace_exit_unwrap(1))
} .map(|entry| (entry.diary_id().map_err_trace_exit_unwrap(1), entry))
let e = e.unwrap(); // safe with above check .sorted_by_key(|&(ref id, _)| id.clone())
.into_iter()
if !e.is_log().map_err_trace_exit_unwrap(1) { .map(|(id, entry)| {
return Ok(()); writeln!(rt.stdout(),
} "{dname: >10} - {y: >4}-{m:0>2}-{d:0>2}T{H:0>2}:{M:0>2} - {text}",
dname = id.diary_name(),
let id = e.diary_id().map_err_trace_exit_unwrap(1); y = id.year(),
writeln!(rt.stdout(), m = id.month(),
"{dname: >10} - {y: >4}-{m:0>2}-{d:0>2}T{H:0>2}:{M:0>2} - {text}", d = id.day(),
dname = id.diary_name(), H = id.hour(),
y = id.year(), M = id.minute(),
m = id.month(), text = entry.get_content())
d = id.day(), .to_exit_code()
H = id.hour(), })
M = id.minute(), .collect::<Result<Vec<()>, _>>()
text = e.get_content()) .unwrap_or_exit();
.to_exit_code()
})
.collect::<Result<Vec<()>, _>>()
.unwrap_or_exit();
} }
} }

View file

@ -36,7 +36,7 @@ use error::ResultExt;
use module_path::ModuleEntryPath; use module_path::ModuleEntryPath;
#[derive(Debug, Clone)] #[derive(Debug, Clone, PartialOrd, Ord, PartialEq, Eq)]
pub struct DiaryId { pub struct DiaryId {
name: String, name: String,
year: i32, year: i32,