1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
use { file_funcs, string }; use libflo_error::{ Result as FuncResult, WrapErr }; use serialization::GuifastSerde; use static_libflo::STATIC_LIBFLO; #[no_mangle] pub extern fn get() -> FuncResult<()> { let libflo = STATIC_LIBFLO.get().wrap_err_to_err()?; let module_mapper = libflo.get_module_mapper(); let module_map = module_mapper.get_raw_map(); let path_resolver = libflo.get_path_resolver(); let self_module_id = module_mapper.get(string::self_module_name()).wrap_err_to_err()?; let mut result_guifast_modules = Vec::new(); for (_, module_id) in module_map { if path_resolver.has_submodule(*module_id, self_module_id).wrap_err_to_err()? { let guifast_file = path_resolver.find_submodule_file_path(string::guifast_file(), *module_id, self_module_id).wrap_err_to_err()?; let mut guifast_serde = file_funcs::guifast_from_path(guifast_file).wrap_err_to_err()?; guifast_serde.canonicalize(*module_id, self_module_id, &path_resolver).wrap_err_to_err()?; result_guifast_modules.extend(guifast_serde.destructure()); } } let result = GuifastSerde::new(result_guifast_modules); libflo.send_event_by_name( self_module_id, string::get(), &result ).wrap_err_to_err() }