use std::fs::{self};
use std::time::SystemTime;
use super::utils::{format_permissions, format_system_time};
#[derive(Debug)]
pub struct FileInfo {
pub size: u64,
pub created: Option<SystemTime>,
pub modified: Option<SystemTime>,
pub accessed: Option<SystemTime>,
pub is_directory: bool,
pub is_file: bool,
pub metadata: fs::Metadata,
}
impl std::fmt::Display for FileInfo {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
r#"size: {}
created: {}
modified: {}
accessed: {}
isDirectory: {}
isFile: {}
permissions: {}
"#,
self.size,
self.created.map_or("".to_string(), format_system_time),
self.modified.map_or("".to_string(), format_system_time),
self.accessed.map_or("".to_string(), format_system_time),
self.is_directory,
self.is_file,
format_permissions(&self.metadata)
)
}
}