rsv_lib/general_lib/
size.rs

1use crate::utils::filename::full_path;
2use crate::utils::return_result::{CliResultData, ResultData};
3use std::fs::File;
4
5pub fn file_size(file: &str) -> CliResultData {
6    let file = full_path(file);
7
8    let file = File::open(file)?;
9    let filesize_bytes = file.metadata()?.len() as f64;
10
11    let filesize_kb = filesize_bytes / 1024.0;
12    let filesize_mb = filesize_bytes / (1024.0 * 1024.0);
13    let filesize_gb = filesize_bytes / (1024.0 * 1024.0 * 1024.0);
14
15    let size = if filesize_gb >= 1.0 {
16        format!("{:.2} GB", filesize_gb)
17    } else if filesize_mb >= 1.0 {
18        format!("File Size: {:.2} MB", filesize_mb)
19    } else {
20        format!("File Size: {:.2} KB", filesize_kb)
21    };
22
23    let out = ResultData::from(vec!["size".to_string()], vec![vec![size]]);
24
25    Ok(Some(out))
26}