diff --git a/src/main.rs b/src/main.rs index f6fbef5..bba5131 100644 --- a/src/main.rs +++ b/src/main.rs @@ -267,5 +267,9 @@ fn print_project_info(info: &ProjectInfo) { println!("[Web project dir] {}", info.web_project_path.display()); println!("[Core project dir] {}", info.core_project_path.display()); println!("[Wasm project dir] {}", info.wasm_project_path.display()); + println!( + "[Cloudflare project dir] {}", + info.cloudflare_project_path.display() + ); println!(""); } diff --git a/src/project_info.rs b/src/project_info.rs index 81e9500..d556fcb 100644 --- a/src/project_info.rs +++ b/src/project_info.rs @@ -21,6 +21,8 @@ pub struct ProjectInfo { pub web_project_path: PathBuf, pub core_project_path: PathBuf, pub wasm_project_path: PathBuf, + pub cloudflare_project_path: PathBuf, + pub backend_dist_path: PathBuf, } impl ProjectInfo { @@ -35,6 +37,8 @@ impl ProjectInfo { let web_project_path = current_dir.join(format!("{}_web", project_name)); let core_project_path = current_dir.join(format!("{}_core", project_name)); let wasm_project_path = current_dir.join(format!("{}_wasm", project_name)); + let cloudflare_project_path = current_dir.join(format!("{}_cloudflare", project_name)); + let backend_dist_path = cloudflare_project_path.join("dist_backend"); Path::new(&web_project_path) .exists() @@ -52,6 +56,8 @@ impl ProjectInfo { web_project_path, core_project_path, wasm_project_path, + cloudflare_project_path, + backend_dist_path, }) } diff --git a/src/rust_builder.rs b/src/rust_builder.rs index 696b41f..dd759b6 100644 --- a/src/rust_builder.rs +++ b/src/rust_builder.rs @@ -12,9 +12,11 @@ use std::path::PathBuf; pub struct Config { pub env: Env, pub project_name: String, - pub dist_path: PathBuf, + pub frontend_dist_path: PathBuf, + pub backend_dist_path: PathBuf, pub web_project_path: PathBuf, pub wasm_project_path: PathBuf, + pub cloudflare_project_path: PathBuf, } impl Config { @@ -22,9 +24,11 @@ impl Config { Self { env: env.clone(), project_name: project_info.project_name.clone(), - dist_path: project_info.dist_path.clone(), + frontend_dist_path: project_info.dist_path.clone(), + backend_dist_path: project_info.backend_dist_path.clone(), web_project_path: project_info.web_project_path.clone(), wasm_project_path: project_info.wasm_project_path.clone(), + cloudflare_project_path: project_info.cloudflare_project_path.clone(), } } @@ -113,6 +117,8 @@ impl RustBuilder { }) .map_err(Error::WasmPack)?; + self.copy_wasm_to_frontend_dist()?; + exec::run(&exec::Config { work_dir: self.config.wasm_project_path.clone(), cmd: "wasm-pack".into(), @@ -133,7 +139,7 @@ impl RustBuilder { .map_err(Error::WasmPack)?; self.patch_backend_wasm_glue()?; - self.copy_wasm_to_dist()?; + self.copy_wasm_to_backend_dist()?; Ok(()) } @@ -167,6 +173,8 @@ impl RustBuilder { }) .map_err(Error::WasmPack)?; + self.copy_wasm_to_frontend_dist()?; + exec::run(&exec::Config { work_dir: self.config.wasm_project_path.clone(), cmd: "wasm-pack".into(), @@ -187,13 +195,14 @@ impl RustBuilder { .map_err(Error::WasmPack)?; self.patch_backend_wasm_glue()?; - self.copy_wasm_to_dist()?; + self.copy_wasm_to_backend_dist()?; Ok(()) } fn prepare_dirs(&self) -> Result<(), Error> { - fs::create_dir_all(&self.config.dist_path).map_err(Error::CreateDistDir)?; + fs::create_dir_all(&self.config.frontend_dist_path).map_err(Error::CreateDistDir)?; + fs::create_dir_all(&self.config.backend_dist_path).map_err(Error::CreateDistDir)?; fs::create_dir_all(&self.config.web_project_wasm_frontend_path()) .map_err(Error::CreateWebWasmDir)?; fs::create_dir_all(&self.config.web_project_wasm_backend_path()) @@ -202,10 +211,10 @@ impl RustBuilder { Ok(()) } - fn copy_wasm_to_dist(&self) -> Result<(), Error> { + fn copy_wasm_to_frontend_dist(&self) -> Result<(), Error> { fs_extra::dir::copy( &self.config.web_project_wasm_frontend_path(), - &self.config.dist_path, + &self.config.frontend_dist_path, &fs_extra::dir::CopyOptions { overwrite: true, ..fs_extra::dir::CopyOptions::default() @@ -213,9 +222,13 @@ impl RustBuilder { ) .map_err(Error::CopyWasmToDist)?; + Ok(()) + } + + fn copy_wasm_to_backend_dist(&self) -> Result<(), Error> { fs_extra::dir::copy( &self.config.web_project_wasm_backend_path(), - &self.config.dist_path, + &self.config.backend_dist_path, &fs_extra::dir::CopyOptions { overwrite: true, ..fs_extra::dir::CopyOptions::default()