use std::time::{Duration, SystemTime};
use autonomi::files::Metadata;
pub fn metadata_for_file(path: &str) -> Metadata {
let unix_time = |property: &'static str, time: std::io::Result<SystemTime>| {
time.inspect_err(|err| {
println!("Failed to get '{property}' metadata for `{path}`: {err}");
})
.unwrap_or(SystemTime::UNIX_EPOCH)
.duration_since(SystemTime::UNIX_EPOCH)
.inspect_err(|err| {
println!("'{property}' metadata of `{path}` is before UNIX epoch: {err}");
})
.unwrap_or(Duration::from_secs(0))
.as_secs()
};
let mut created = 0;
let mut modified = 0;
let mut size = 0;
if let Ok(fs_metadata) = std::fs::metadata(path) {
created = unix_time("created", fs_metadata.created());
modified = unix_time("modified", fs_metadata.modified());
size = fs_metadata.len()
};
Metadata {
created,
modified,
size,
extra: None,
}
}