generate_rust_project

Function generate_rust_project 

Source
pub fn generate_rust_project(
    project: &ProjectSchema,
) -> Result<GeneratedProject>
Examples found in repository?
examples/codegen_demo.rs (line 28)
10fn main() {
11    println!("🔧 ADK Studio Codegen Demo\n");
12    println!("This demo generates Rust projects from agent templates.\n");
13
14    // Generate all template examples
15    let templates = vec![
16        ("simple_chat", simple_chat_project()),
17        ("research_pipeline", research_pipeline_project()),
18        ("content_refiner", content_refiner_project()),
19        ("parallel_analyzer", parallel_analyzer_project()),
20        ("support_router", support_router_project()),
21    ];
22
23    for (name, project) in templates {
24        println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
25        println!("📦 Generating: {}", name);
26        println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");
27
28        match generate_rust_project(&project) {
29            Ok(generated) => {
30                for file in &generated.files {
31                    println!("📄 {}\n", file.path);
32                    // Print first 60 lines of main.rs
33                    if file.path == "src/main.rs" {
34                        let lines: Vec<&str> = file.content.lines().take(60).collect();
35                        for line in lines {
36                            println!("  {}", line);
37                        }
38                        println!("  ... (truncated)\n");
39                    }
40                }
41
42                // Optionally write to disk
43                let out_dir = format!("/tmp/adk-codegen-demo/{}", name);
44                fs::create_dir_all(format!("{}/src", out_dir)).ok();
45                for file in &generated.files {
46                    let path = format!("{}/{}", out_dir, file.path);
47                    fs::write(&path, &file.content).ok();
48                }
49                println!("✅ Written to: {}\n", out_dir);
50            }
51            Err(e) => println!("❌ Error: {}\n", e),
52        }
53    }
54
55    println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
56    println!("🚀 To run an example:");
57    println!("   cd /tmp/adk-codegen-demo/simple_chat");
58    println!("   GOOGLE_API_KEY=your_key cargo run");
59    println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
60}