organic/src/context/file_access_interface.rs

24 lines
668 B
Rust
Raw Normal View History

use std::fmt::Debug;
use std::path::PathBuf;
2023-10-14 17:48:38 -04:00
pub trait FileAccessInterface: Sync + Debug {
2023-09-04 16:53:02 -04:00
fn read_file(&self, path: &str) -> Result<String, std::io::Error>;
}
#[derive(Debug, Clone)]
pub struct LocalFileAccessInterface {
pub working_directory: Option<PathBuf>,
}
impl FileAccessInterface for LocalFileAccessInterface {
2023-09-04 16:53:02 -04:00
fn read_file(&self, path: &str) -> Result<String, std::io::Error> {
let final_path = self
.working_directory
.as_ref()
.map(PathBuf::as_path)
.map(|pb| pb.join(path))
.unwrap_or_else(|| PathBuf::from(path));
Ok(std::fs::read_to_string(final_path)?)
}
}