rsv_lib/io/
tail.rs

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        // lines
12        let lines = IoReader::new().lines();
13
14        // header
15        if !self.no_header && !lines.is_empty() {
16            wtr.write_str_unchecked(&lines[0]);
17        }
18
19        // show tail n
20        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}