1use crate::{
2 args::Tail,
3 utils::{cli_result::CliResult, filename::new_file, reader::IoReader, writer::Writer},
4};
5
6impl Tail {
7 pub fn io_run(&self) -> CliResult {
8 let out = new_file("tail.csv");
9 let mut wtr = Writer::file_or_stdout(self.export, &out)?;
10
11 let lines = IoReader::new().lines();
13
14 if !self.no_header && !lines.is_empty() {
16 wtr.write_str_unchecked(&lines[0]);
17 }
18
19 lines
21 .iter()
22 .skip(1 - self.no_header as usize)
23 .rev()
24 .take(self.n)
25 .rev()
26 .for_each(|r| wtr.write_str_unchecked(r));
27
28 if self.export {
29 println!("Saved to file: {}", out.display())
30 }
31
32 Ok(())
33 }
34}