devalang_core/core/debugger/
module.rs

1use crate::core::{
2    debugger::Debugger,
3    store::{function::FunctionTable, variable::VariableTable},
4};
5use std::fs::create_dir_all;
6
7pub fn write_module_variable_log_file(
8    output_dir: &str,
9    module_path: &str,
10    variable_table: &VariableTable,
11) {
12    let debugger = Debugger::new();
13    let mut content = String::new();
14    let module_name = module_path
15        .split('/')
16        .next_back()
17        .unwrap_or("index")
18        .replace(".deva", "");
19
20    let log_directory = format!("{}/logs/modules/{}", output_dir, module_name);
21    create_dir_all(&log_directory).expect("Failed to create log directory");
22
23    for (var_name, var_data) in &variable_table.variables {
24        content.push_str(&format!("{:?} = {:?}\n", var_name, var_data));
25    }
26
27    content.push('\n');
28
29    debugger.write_log_file(&log_directory, "variables.log", &content);
30}
31
32pub fn write_module_function_log_file(
33    output_dir: &str,
34    module_path: &str,
35    function_table: &FunctionTable,
36) {
37    let debugger = Debugger::new();
38    let mut content = String::new();
39    let module_name = module_path
40        .split('/')
41        .next_back()
42        .unwrap_or("index")
43        .replace(".deva", "");
44
45    let log_directory = format!("{}/logs/modules/{}", output_dir, module_name);
46    create_dir_all(&log_directory).expect("Failed to create log directory");
47
48    for (func_name, func_data) in &function_table.functions {
49        content.push_str(&format!("{:?} = {:?}\n", func_name, func_data));
50    }
51
52    content.push('\n');
53
54    debugger.write_log_file(&log_directory, "functions.log", &content);
55}