1use std::fs;
2use std::io;
3use std::path::PathBuf;
4
5pub fn get_folder_filename_list(folder_name: &PathBuf) -> io::Result<Vec<String>> {
6 let paths: fs::ReadDir = fs::read_dir(folder_name)
7 .map_err(|e| io::Error::new(e.kind(), format!("Failed to read folder {}: {}", folder_name.display(), e)))?;
8
9 let mut file_name_list = Vec::new();
10
11 for entry in paths {
12 let path = entry
13 .map_err(|e| io::Error::new(e.kind(), format!("Failed to iterate entry in {}: {}", folder_name.display(), e)))?
14 .path();
15 file_name_list.push(path.display().to_string());
16 }
17
18 Ok(file_name_list)
19}
20
21pub fn create(path: &PathBuf) -> io::Result<()> {
22 fs::create_dir_all(path)
23 .map_err(|e| io::Error::new(e.kind(), format!("Failed to create folder {}: {}", path.display(), e)))
24}
25
26pub fn remove_if_exists(path: &PathBuf) -> io::Result<()> {
27 if exists(path)? {
28 fs::remove_dir_all(path)
29 .map_err(|e| io::Error::new(e.kind(), format!("Failed to remove folder {}: {}", path.display(), e)))?;
30 }
31 Ok(())
32}
33
34pub fn exists(path: &PathBuf) -> io::Result<bool> {
35 let path_buf = PathBuf::from(path);
36 Ok(path_buf.exists())
37}
38
39#[cfg(test)]
40#[path = "../tests/unit_tests/folder.rs"]
41pub mod test;