espforge_lib/generate/
espgenerate.rs

1use anyhow::{Context, Result};
2use log::debug;
3use std::process::Command;
4
5pub fn run(project_name: &str, chip: &str, enable_async: bool) -> Result<()> {
6    debug!("Running esp-generate for chip: {}", chip);
7    
8    let mut cmd = Command::new("esp-generate");
9    cmd.arg("--headless")
10        .arg("--chip")
11        .arg(chip)
12        .arg("-o")
13        .arg("log")
14        .arg("-o")
15        .arg("unstable-hal")
16        .arg("-o")
17        .arg("esp-backtrace")
18        .arg("-o")
19        .arg("wokwi")
20        .arg("-o")
21        .arg("vscode");
22    
23    if enable_async {
24        debug!("Enabling embassy async support");
25        cmd.arg("-o").arg("embassy");
26    }
27
28    let output = cmd.arg(project_name).output()
29        .context("Failed to execute esp-generate command")?;
30
31    if !output.status.success() {
32        anyhow::bail!(
33            "esp-generate failed: {}",
34            String::from_utf8_lossy(&output.stderr)
35        );
36    }
37    
38    Ok(())
39}