use std::{fmt::Display, fs::Metadata, path::Path};
#[derive(Debug)]
pub(crate) enum ResolvedType {
File,
Dir,
}
impl Display for ResolvedType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
ResolvedType::File => write!(f, "file"),
ResolvedType::Dir => write!(f, "directory"),
}
}
}
pub(crate) struct ResolvedMetadata(Metadata);
impl ResolvedMetadata {
pub(crate) fn new(path: impl AsRef<Path>) -> Result<Self, std::io::Error> {
std::fs::metadata(path.as_ref()).map(ResolvedMetadata)
}
pub(crate) fn resolved_type(&self) -> ResolvedType {
if self.0.is_dir() {
ResolvedType::Dir
} else {
ResolvedType::File
}
}
}