ruscode 1.0.0

ruscode - A visual studio code's workspaces organizer written in Rust
use std::fs;

use super::error::ApplicationInitError;
use crate::common::system::SystemPaths;

pub fn init_application_folders(path: Option<String>) -> Result<(), ApplicationInitError> {
    let create_path: String = match path {
        Some(val) => val,
        None => SystemPaths::database_folder(),
    };
    fs::create_dir_all(create_path).expect("Cannot create application folders.");
    Ok(())
}

#[cfg(test)]
mod test_system_init {
    use std::fs;

    use super::init_application_folders;

    #[test]
    fn test_fake_application_folder_creation() {
        let fake_dir_path = "fake/dir/folder";
        let fake_dir_path_root = "fake";

        match init_application_folders(Some(String::from(fake_dir_path))) {
            Ok(_) => {
                fs::remove_dir_all(fake_dir_path_root).expect("Remove fake dirs failed.");
            }
            Err(_) => {
                panic!("Cannot create fake application folder.");
            }
        };
    }
}