reactive_graph/tooling/instances/repositories/
remove.rs

1use crate::tooling::instances::repositories::args::DeleteRepositoryArgs;
2use anyhow::anyhow;
3use std::path::Path;
4
5pub fn remove_repository(instance_dir: &Path, args: DeleteRepositoryArgs) -> anyhow::Result<()> {
6    if args.local_name == "default" && !args.force.unwrap_or(false) {
7        return Err(anyhow!("The default repository cannot be removed!"));
8    }
9    let mut repository_dir = instance_dir.to_owned();
10    repository_dir.push(&args.local_name);
11    match std::fs::remove_dir_all(&repository_dir) {
12        Ok(_) => {
13            println!("Removed repository {} from {}", args.local_name, repository_dir.to_string_lossy());
14            Ok(())
15        }
16        Err(e) => {
17            eprintln!("Cannot remove repository {} from {}: {}", args.local_name, repository_dir.to_string_lossy(), e);
18            Err(e.into())
19        }
20    }
21}