use std::{
path::PathBuf,
sync::{Arc, Mutex},
};
use color_eyre::eyre;
use pax_manifest::PaxManifest;
use crate::{RunContext, RunTarget};
use self::{apple::build_apple_project_with_cartridge, web::build_web_project_with_cartridge};
pub mod apple;
pub mod web;
pub fn build_project_with_cartridge(
pax_dir: &PathBuf,
ctx: &RunContext,
process_child_ids: Arc<Mutex<Vec<u64>>>,
assets_dirs: Vec<String>,
manifest: PaxManifest,
) -> Result<Option<PathBuf>, eyre::Report> {
let target: &RunTarget = &ctx.target;
let pax_dir = PathBuf::from(pax_dir.to_str().unwrap());
match target {
RunTarget::macOS | RunTarget::iOS => {
build_apple_project_with_cartridge(ctx, &pax_dir, process_child_ids)?;
Ok(None)
}
RunTarget::Web => {
let fs = build_web_project_with_cartridge(
ctx,
&pax_dir,
process_child_ids,
assets_dirs,
manifest,
)?;
Ok(Some(fs))
}
}
}