reactive_graph/tooling/instances/repositories/
init.rs

1use crate::tooling::instances::provisioning::create_dir;
2use crate::tooling::instances::repositories::args::InitRepositoryArgs;
3use anyhow::Result;
4use anyhow::anyhow;
5use std::path::Path;
6
7pub fn init_repository(instance_dir: &Path, args: InitRepositoryArgs) -> Result<()> {
8    let chown = args.chown.get_chown();
9    let mut repository_dir = instance_dir.to_owned();
10    repository_dir.push(format!("repositories/{}", args.local_name));
11    match args.url {
12        None => {
13            create_dir(&repository_dir, "types/components", &chown)?;
14            create_dir(&repository_dir, "types/entities", &chown)?;
15            create_dir(&repository_dir, "types/relations", &chown)?;
16            create_dir(&repository_dir, "types/flows", &chown)?;
17            create_dir(&repository_dir, "instances/entities", &chown)?;
18            create_dir(&repository_dir, "instances/relations", &chown)?;
19            create_dir(&repository_dir, "instances/flows", &chown)?;
20            Ok(())
21        }
22        Some(_url) => {
23            // TODO: git clone
24            // TODO: verify
25            Err(anyhow!("Not yet implemented"))
26        }
27    }
28}