use crate::error::Result;
use crate::project::Project;
use crate::sdk::Sdk;
use colored::Colorize;
pub fn execute(release: bool) -> Result<()> {
println!("{}", "═".repeat(60).bright_black());
println!("{} Build and Run", "▶".cyan().bold());
println!("{}", "═".repeat(60).bright_black());
println!();
println!("{} Building project...", "→".cyan());
println!();
crate::commands::build::execute(release, false)?;
println!();
println!("{}", "─".repeat(60).bright_black());
println!();
let project = Project::find_and_load()?;
let sdk = Sdk::detect()?;
let pdx_path = project.pdx_path();
if !pdx_path.exists() {
return Err(crate::error::CrankError::InvalidProject(format!(
"Build output not found: {}",
pdx_path.display()
)));
}
println!("{} Launching Playdate Simulator...", "→".cyan());
println!();
println!(" {} {}", "Game:".dimmed(), project.config.package.name);
println!(" {} {}", "Bundle:".dimmed(), pdx_path.display());
let sim_path = sdk.simulator_path()?;
println!(" {} {}", "Simulator:".dimmed(), sim_path.display());
println!();
sdk.launch_simulator(&pdx_path)?;
println!("{} Simulator launched successfully!", "✓".green().bold());
println!();
println!(
"{}",
"The game is now running in the Playdate Simulator.".dimmed()
);
println!(
"{}",
"Press Ctrl+C to stop watching (simulator will keep running).".dimmed()
);
Ok(())
}