summaryrefslogtreecommitdiffstats
path: root/src/actions/list.rs
blob: b7958b1c52e1c64f745d32eeac1e97f2391663b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use crate::selectors::SelectFilters;
use crate::input;
use crate::KhResult;

pub fn list_by_args(args: &[&str]) -> KhResult<()> {
  let lines = input::default_input_khlines()?;
  let filters = SelectFilters::parse_from_args_with_range(args)?;

  let events = lines
    .enumerate()
    .filter(|(index, khline)| {
      match khline.to_event() {
        Ok(event) => filters.is_selected_index(*index, &event),
        Err(cause) => { warn!("{}", cause); false },
      }
    });

  for (_, khline) in events {
    khprintln!("{}", khline);
  }

  Ok(())
}