use crate::error::OxenError;
use crate::model::{LocalRepository, Remote};
use crate::opts::StorageOpts;
pub fn set_remote(repo: &mut LocalRepository, name: &str, url: &str) -> Result<Remote, OxenError> {
if url::Url::parse(url).is_err() {
return Err(OxenError::invalid_set_remote_url(url));
}
if repo.is_remote_mode() {
return Err(OxenError::basic_str(
"Error: Cannot change remote of remote-mode repos",
));
}
let remote = repo.set_remote(name, url);
repo.save()?;
Ok(remote)
}
pub fn delete_remote(repo: &mut LocalRepository, name: &str) -> Result<(), OxenError> {
if repo.is_remote_mode() {
return Err(OxenError::basic_str(
"Error: Cannot delete from remote of remote-mode repos",
));
}
repo.delete_remote(name);
repo.save()?;
Ok(())
}
pub fn set_workspace(repo: &mut LocalRepository, name: &str) -> Result<String, OxenError> {
repo.set_workspace(name)?;
repo.save()?;
Ok(name.to_string())
}
pub fn delete_workspace(repo: &mut LocalRepository, name: &str) -> Result<(), OxenError> {
repo.delete_workspace(name)?;
repo.save()?;
Ok(())
}
pub async fn set_version_store(
repo: &mut LocalRepository,
opts: &StorageOpts,
) -> Result<(), OxenError> {
repo.set_version_store(opts).await?;
repo.save()?;
Ok(())
}