pub mod parser; pub mod analyzer; pub mod typemap; pub mod generator; pub mod locator;
pub fn generate_stubs(debug: bool) {
let project_infos = locator::locate_python_project().unwrap();
for project_info in project_infos {
println!("Processing project: {}", project_info.project_name);
println!("Output directory: {}", project_info.output_dir.display());
println!("Module name: {}", project_info.module_name);
let stub_file = project_info.output_dir.join(format!("{}.pyi", project_info.module_name));
if stub_file.exists() {
std::fs::remove_file(&stub_file)
.unwrap_or_else(|e| println!("Failed to remove existing stub file: {}", e));
}
for rust_src_file in project_info.rust_src_file {
if debug {
println!("Processing file: {}", rust_src_file.display());
}
let parsed_rust_data = parser::parse_rust_src_file(&rust_src_file);
let python_function_data = analyzer::analyze_rust_src_data(&parsed_rust_data);
generator::generate_stub(
&python_function_data,
&project_info.output_dir,
&project_info.module_name,
).unwrap();
}
}
}