diff --git a/src-tauri/src/web/handlers/mod.rs b/src-tauri/src/web/handlers/mod.rs index 3fde039..333d3b8 100644 --- a/src-tauri/src/web/handlers/mod.rs +++ b/src-tauri/src/web/handlers/mod.rs @@ -9,4 +9,5 @@ pub mod version_control; pub mod folder_commands; pub mod mcp; pub mod git; +pub mod project_boot; pub mod web_server; diff --git a/src-tauri/src/web/handlers/project_boot.rs b/src-tauri/src/web/handlers/project_boot.rs new file mode 100644 index 0000000..b7d4a85 --- /dev/null +++ b/src-tauri/src/web/handlers/project_boot.rs @@ -0,0 +1,49 @@ +use axum::Json; +use serde::Deserialize; + +use crate::app_error::AppCommandError; +use crate::commands::project_boot as pb_commands; + +// --------------------------------------------------------------------------- +// Param structs +// --------------------------------------------------------------------------- + +#[derive(Deserialize)] +pub struct DetectPackageManagerParams { + pub name: String, +} + +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct CreateShadcnProjectParams { + pub project_name: String, + pub template: String, + pub preset_code: String, + pub package_manager: String, + pub target_dir: String, +} + +// --------------------------------------------------------------------------- +// Handlers +// --------------------------------------------------------------------------- + +pub async fn detect_package_manager( + Json(params): Json, +) -> Json { + let info = pb_commands::detect_package_manager(params.name).await; + Json(info) +} + +pub async fn create_shadcn_project( + Json(params): Json, +) -> Result, AppCommandError> { + let result = pb_commands::create_shadcn_project( + params.project_name, + params.template, + params.preset_code, + params.package_manager, + params.target_dir, + ) + .await?; + Ok(Json(result)) +} diff --git a/src-tauri/src/web/router.rs b/src-tauri/src/web/router.rs index 162cbd1..ea50fd1 100644 --- a/src-tauri/src/web/router.rs +++ b/src-tauri/src/web/router.rs @@ -167,6 +167,9 @@ pub fn build_router(app: tauri::AppHandle, token: String, static_dir: std::path: .route("/acp_read_agent_skill", post(handlers::acp::acp_read_agent_skill)) .route("/acp_save_agent_skill", post(handlers::acp::acp_save_agent_skill)) .route("/acp_delete_agent_skill", post(handlers::acp::acp_delete_agent_skill)) + // ─── Project boot ─── + .route("/detect_package_manager", post(handlers::project_boot::detect_package_manager)) + .route("/create_shadcn_project", post(handlers::project_boot::create_shadcn_project)) // ─── Web Server ─── .route("/get_web_server_status", post(handlers::web_server::get_web_server_status)) .route("/start_web_server", post(handlers::web_server::start_web_server))