Fix: Duplicated printing of entries with "show --all"
The problem was that the used `Diary::diary_names()` iterator does not call `unique()` on its output. That decision was made because the return type would get more complicated with that feature. Now that rustc 1.26 with Impl Trait is out, we can refactor the return types of these functions (so also with `Diary::diary_names()`) to automatically do this.
This commit is contained in:
parent
7c44bc1aa3
commit
3b97db5c25
1 changed files with 10 additions and 1 deletions
|
@ -104,6 +104,8 @@ fn main() {
|
|||
}
|
||||
|
||||
fn show(rt: &Runtime) {
|
||||
use std::borrow::Cow;
|
||||
|
||||
use libimagdiary::iter::DiaryEntryIterator;
|
||||
use libimagdiary::entry::DiaryEntry;
|
||||
|
||||
|
@ -114,13 +116,19 @@ fn show(rt: &Runtime) {
|
|||
.collect(),
|
||||
|
||||
None => if scmd.is_present("show-all") {
|
||||
debug!("Showing for all diaries");
|
||||
rt.store()
|
||||
.diary_names()
|
||||
.map_err_trace_exit_unwrap(1)
|
||||
.map(|diary_name| {
|
||||
let diary_name = diary_name.map_err_trace_exit_unwrap(1);
|
||||
Diary::entries(rt.store(), &diary_name).map_err_trace_exit_unwrap(1)
|
||||
debug!("Getting entries for Diary: {}", diary_name);
|
||||
let entries = Diary::entries(rt.store(), &diary_name).map_err_trace_exit_unwrap(1);
|
||||
let diary_name = Cow::from(diary_name);
|
||||
(entries, diary_name)
|
||||
})
|
||||
.unique_by(|tpl| tpl.1.clone())
|
||||
.map(|tpl| tpl.0)
|
||||
.collect()
|
||||
} else {
|
||||
// showing default logs
|
||||
|
@ -144,6 +152,7 @@ fn show(rt: &Runtime) {
|
|||
.sorted_by_key(|&(ref id, _)| id.clone())
|
||||
.into_iter()
|
||||
.map(|(id, entry)| {
|
||||
debug!("Found entry: {:?}", entry);
|
||||
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(),
|
||||
|
|
Loading…
Reference in a new issue