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}