cmx_core/gateway/
filesystem.rs1use anyhow::Result;
2use std::path::{Path, PathBuf};
3
4pub struct DirEntry {
9 pub path: PathBuf,
10 pub file_name: String,
11 pub is_dir: bool,
12}
13
14pub trait Filesystem {
20 fn exists(&self, path: &Path) -> bool;
21 fn is_dir(&self, path: &Path) -> bool;
22 fn is_file(&self, path: &Path) -> bool;
23 fn read_to_string(&self, path: &Path) -> Result<String>;
24 fn read(&self, path: &Path) -> Result<Vec<u8>>;
25 fn write(&self, path: &Path, contents: &str) -> Result<()>;
26 fn write_bytes(&self, path: &Path, contents: &[u8]) -> Result<()>;
27 fn create_dir_all(&self, path: &Path) -> Result<()>;
28 fn copy_file(&self, src: &Path, dest: &Path) -> Result<()>;
29 fn rename(&self, from: &Path, to: &Path) -> Result<()>;
31 fn remove_file(&self, path: &Path) -> Result<()>;
32 fn remove_dir_all(&self, path: &Path) -> Result<()>;
33 fn read_dir(&self, path: &Path) -> Result<Vec<DirEntry>>;
34 fn canonicalize(&self, path: &Path) -> Result<PathBuf>;
35}