From 298ecb9ff6b1bc4d5bb0911c7bfd8cb7679794e1 Mon Sep 17 00:00:00 2001 From: xintaofei Date: Fri, 27 Mar 2026 16:40:09 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E9=A1=B9=E7=9B=AE=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E5=99=A8=E7=9A=84web=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/src/web/handlers/mod.rs | 1 + src-tauri/src/web/handlers/project_boot.rs | 49 ++++++++++++++++++++++ src-tauri/src/web/router.rs | 3 ++ 3 files changed, 53 insertions(+) create mode 100644 src-tauri/src/web/handlers/project_boot.rs 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))