summaryrefslogtreecommitdiff
path: root/crates/vcs_actions/src/registry/client_registry.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2025-10-29 15:28:50 +0800
committerGitHub <noreply@github.com>2025-10-29 15:28:50 +0800
commit4f35da85641549c3e08c4e1b73fccfc7ec9779a2 (patch)
tree360a7c95183bc9800f95fdb34e162383f66daffa /crates/vcs_actions/src/registry/client_registry.rs
parent23784691ed4668e4e308fb5af70c2574f5936346 (diff)
parent50945b098e3f6ff16f3f4cf25c2835ddf1e7b3a8 (diff)
Merge pull request #29 from JustEnoughVCS/jvcs_dev_actions
Jvcs dev actions
Diffstat (limited to 'crates/vcs_actions/src/registry/client_registry.rs')
-rw-r--r--crates/vcs_actions/src/registry/client_registry.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/crates/vcs_actions/src/registry/client_registry.rs b/crates/vcs_actions/src/registry/client_registry.rs
index 9769750..6f820e6 100644
--- a/crates/vcs_actions/src/registry/client_registry.rs
+++ b/crates/vcs_actions/src/registry/client_registry.rs
@@ -1,5 +1,12 @@
+use std::sync::Arc;
+
use action_system::{action::ActionContext, action_pool::ActionPool};
+use cfg_file::config::ConfigFile;
use tcp_connection::error::TcpTargetError;
+use vcs_data::data::{
+ local::{LocalWorkspace, config::LocalConfig},
+ user::UserDirectory,
+};
use crate::{
actions::local_actions::register_set_upstream_vault_action,
@@ -36,6 +43,31 @@ async fn on_proc_begin(
let action_name = ctx.action_name().to_string();
let action_args_json = ctx.action_args_json().clone();
+ // Insert LocalWorkspace Arc
+ let Ok(local_config) = LocalConfig::read().await else {
+ return Err(TcpTargetError::NotFound(
+ "The current directory does not have a local workspace".to_string(),
+ ));
+ };
+ let local_workspace = match LocalWorkspace::init_current_dir(local_config) {
+ Some(workspace) => workspace,
+ None => {
+ return Err(TcpTargetError::NotFound("Failed to initialize local workspace.".to_string()));
+ }
+ };
+ let local_workspace_arc = Arc::new(local_workspace);
+ ctx.insert_arc_data(local_workspace_arc);
+
+ // Insert UserDirectory Arc
+ let Some(user_directory) = UserDirectory::current_doc_dir() else {
+ return Err(TcpTargetError::NotFound(
+ "The user directory does not exist.".to_string(),
+ ));
+ };
+
+ let user_directory_arc = Arc::new(user_directory);
+ ctx.insert_arc_data(user_directory_arc);
+
// Get instance
let Some(instance) = ctx.instance() else {
return Err(TcpTargetError::Unsupported(