Skip to main content

liboxen/command/
config.rs

1//! # oxen config
2//!
3//! Configuration commands for Oxen
4//!
5
6use crate::error::OxenError;
7use crate::model::{LocalRepository, Remote};
8use crate::opts::StorageOpts;
9
10/// # Set the remote for a repository
11/// Tells the CLI where to push the changes to
12pub 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
28/// # Remove the remote for a repository
29/// If you added a remote you no longer want, can remove it by supplying the name
30pub 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
42/// # Set the workspace for a remote-mode repository
43/// Tells the CLI which workspace to upload the changes to
44pub 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
51/// # Remove a workspace for a repository
52/// If you added a workspace you no longer want, can remove it by supplying the name
53pub fn delete_workspace(repo: &mut LocalRepository, name: &str) -> Result<(), OxenError> {
54    repo.delete_workspace(name)?;
55    repo.save()?;
56    Ok(())
57}
58
59/// # Set the version store location for a repository
60/// Tells the CLI where to save version files
61pub 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}