Documentation
use crate::plugin::cast_ref;
use crate::service::plugin_manager::PluginManager;
use atri_ffi::RustString;
use tracing::error;

pub extern "C" fn env_get_workspace(handle: usize, manager: *const ()) -> RustString {
    let manager: &PluginManager = cast_ref(manager);
    manager
        .find_plugin(handle)
        .map(|p| {
            let name = p.name();
            let mut path = std::env::current_dir()
                .ok()
                .and_then(|p| {
                    p.to_str().map(|str| {
                        let mut p = String::from(str);
                        p.push('/');
                        p
                    })
                })
                .unwrap_or_default();

            path.push_str("workspaces/");
            path.push_str(name);

            if let Err(e) = std::fs::create_dir_all(&path) {
                error!("为{}创建Workspace失败: {}", p, e);
            }

            path
        })
        .unwrap_or_else(String::new)
        .into()
}