summaryrefslogtreecommitdiff
path: root/crates/vcs_data/src/data/local.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_data/src/data/local.rs
parent23784691ed4668e4e308fb5af70c2574f5936346 (diff)
parent50945b098e3f6ff16f3f4cf25c2835ddf1e7b3a8 (diff)
Merge pull request #29 from JustEnoughVCS/jvcs_dev_actions
Jvcs dev actions
Diffstat (limited to 'crates/vcs_data/src/data/local.rs')
-rw-r--r--crates/vcs_data/src/data/local.rs21
1 files changed, 16 insertions, 5 deletions
diff --git a/crates/vcs_data/src/data/local.rs b/crates/vcs_data/src/data/local.rs
index c93bd2b..fb43042 100644
--- a/crates/vcs_data/src/data/local.rs
+++ b/crates/vcs_data/src/data/local.rs
@@ -1,7 +1,7 @@
-use std::{env::current_dir, path::PathBuf};
+use std::{env::current_dir, path::PathBuf, sync::Arc};
use cfg_file::config::ConfigFile;
-use tokio::fs;
+use tokio::{fs, sync::Mutex};
use crate::{
constants::{CLIENT_FILE_README, CLIENT_FILE_WORKSPACE},
@@ -12,7 +12,7 @@ use crate::{
pub mod config;
pub struct LocalWorkspace {
- config: LocalConfig,
+ config: Arc<Mutex<LocalConfig>>,
local_path: PathBuf,
}
@@ -25,13 +25,19 @@ impl LocalWorkspace {
/// Initialize local workspace.
pub fn init(config: LocalConfig, local_path: impl Into<PathBuf>) -> Option<Self> {
let local_path = find_local_path(local_path)?;
- Some(Self { config, local_path })
+ Some(Self {
+ config: Arc::new(Mutex::new(config)),
+ local_path,
+ })
}
/// Initialize local workspace in the current directory.
pub fn init_current_dir(config: LocalConfig) -> Option<Self> {
let local_path = current_local_path()?;
- Some(Self { config, local_path })
+ Some(Self {
+ config: Arc::new(Mutex::new(config)),
+ local_path,
+ })
}
/// Setup local workspace
@@ -92,6 +98,11 @@ Without these credentials, the server will reject all access requests.
Ok(())
}
+ /// Get a reference to the local configuration.
+ pub fn config(&self) -> Arc<Mutex<LocalConfig>> {
+ self.config.clone()
+ }
+
/// Setup local workspace in current directory
pub async fn setup_local_workspace_current_dir() -> Result<(), std::io::Error> {
Self::setup_local_workspace(current_dir()?).await?;