1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use std::sync::{Arc, Mutex};

use anyhow::Error;
use fluentci_core::deps::{Graph, GraphCommand};
use fluentci_ext::devbox::Devbox as DevboxExt;
use fluentci_types::devbox::Devbox;
use uuid::Uuid;

pub fn devbox(graph: Arc<Mutex<Graph>>, reset: bool) -> Result<Devbox, Error> {
    let mut graph = graph.lock().unwrap();

    if reset {
        graph.reset();
    }

    graph.runner = Arc::new(Box::new(DevboxExt::default()));
    graph.runner.setup()?;

    let id = Uuid::new_v4().to_string();
    graph.execute(GraphCommand::AddVertex(
        id.clone(),
        "devbox".into(),
        "".into(),
        vec![],
        Arc::new(Box::new(DevboxExt::default())),
    ));

    let devbox = Devbox { id };
    Ok(devbox)
}