rsv_lib/general_lib/
size.rs1use 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}