1use crate::args::Size;
2use crate::utils::cli_result::CliResult;
3use std::io::{stdin, Read};
4
5impl Size {
6 pub fn io_run(&self) -> CliResult {
7 let mut buffer = [0; 1024]; let mut total_bytes_read = 0;
9
10 loop {
11 let bytes_read = stdin().read(&mut buffer)?;
12 if bytes_read == 0 {
13 break;
15 }
16 total_bytes_read += bytes_read;
17 }
18
19 let filesize_kb = total_bytes_read as f64 / 1024.0;
20 let filesize_mb = total_bytes_read as f64 / (1024.0 * 1024.0);
21 let filesize_gb = total_bytes_read as f64 / (1024.0 * 1024.0 * 1024.0);
22
23 if filesize_gb >= 1.0 {
24 println!("File Size: {:.2} GB", filesize_gb);
25 } else if filesize_mb >= 1.0 {
26 println!("File Size: {:.2} MB", filesize_mb);
27 } else {
28 println!("File Size: {:.2} KB", filesize_kb);
29 }
30
31 Ok(())
32 }
33}