espforge_lib/generate/
espgenerate.rs1use 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}