tauri_typegen/
commands.rs1use crate::analysis::CommandAnalyzer;
2use crate::generators::generator::BindingsGenerator;
3use crate::models::*;
4use crate::Result;
5
6#[tauri::command]
8pub fn ping(payload: PingRequest) -> Result<PingResponse> {
9 Ok(PingResponse {
10 value: Some(format!(
11 "Pong: {}",
12 payload.value.unwrap_or_else(|| "Unknown".to_string())
13 )),
14 })
15}
16
17#[tauri::command]
19pub async fn analyze_commands(payload: AnalyzeCommandsRequest) -> Result<AnalyzeCommandsResponse> {
20 let mut analyzer = CommandAnalyzer::new();
21
22 match analyzer.analyze_project(&payload.project_path) {
23 Ok(commands) => Ok(AnalyzeCommandsResponse { commands }),
24 Err(e) => Err(crate::Error::CommandAnalysis(e.to_string())),
25 }
26}
27
28#[tauri::command]
30pub async fn generate_models(payload: GenerateModelsRequest) -> Result<GenerateModelsResponse> {
31 let mut analyzer = CommandAnalyzer::new();
32
33 let commands = analyzer
35 .analyze_project(&payload.project_path)
36 .map_err(|e| crate::Error::CommandAnalysis(e.to_string()))?;
37
38 let mut generator = BindingsGenerator::new(payload.validation_library);
40 let output_path = payload
41 .output_path
42 .unwrap_or_else(|| format!("{}/generated", payload.project_path));
43
44 let generated_files = generator
45 .generate_models(
46 &commands,
47 analyzer.get_discovered_structs(),
48 &output_path,
49 &analyzer,
50 )
51 .map_err(|e| crate::Error::CodeGeneration(e.to_string()))?;
52
53 Ok(GenerateModelsResponse {
54 generated_files,
55 commands_found: commands.len() as i32,
56 types_generated: commands.iter().map(|c| c.parameters.len()).sum::<usize>() as i32,
57 })
58}