liboxen/command/
config.rs1use crate::error::OxenError;
7use crate::model::{LocalRepository, Remote};
8use crate::opts::StorageOpts;
9
10pub fn set_remote(repo: &mut LocalRepository, name: &str, url: &str) -> Result<Remote, OxenError> {
13 if url::Url::parse(url).is_err() {
14 return Err(OxenError::invalid_set_remote_url(url));
15 }
16
17 if repo.is_remote_mode() {
18 return Err(OxenError::basic_str(
19 "Error: Cannot change remote of remote-mode repos",
20 ));
21 }
22
23 let remote = repo.set_remote(name, url);
24 repo.save()?;
25 Ok(remote)
26}
27
28pub fn delete_remote(repo: &mut LocalRepository, name: &str) -> Result<(), OxenError> {
31 if repo.is_remote_mode() {
32 return Err(OxenError::basic_str(
33 "Error: Cannot delete from remote of remote-mode repos",
34 ));
35 }
36
37 repo.delete_remote(name);
38 repo.save()?;
39 Ok(())
40}
41
42pub fn set_workspace(repo: &mut LocalRepository, name: &str) -> Result<String, OxenError> {
45 repo.set_workspace(name)?;
46 repo.save()?;
47
48 Ok(name.to_string())
49}
50
51pub fn delete_workspace(repo: &mut LocalRepository, name: &str) -> Result<(), OxenError> {
54 repo.delete_workspace(name)?;
55 repo.save()?;
56 Ok(())
57}
58
59pub async fn set_version_store(
62 repo: &mut LocalRepository,
63 opts: &StorageOpts,
64) -> Result<(), OxenError> {
65 repo.set_version_store(opts).await?;
66 repo.save()?;
67
68 Ok(())
69}