cartulary 0.3.0-alpha.1

The knowledge layer of your project — decisions, issues, docs, all in one place.
Documentation
use cucumber::when;

use crate::CartularyWorld;

// ── When ──────────────────────────────────────────────────────────────────────

#[when("I initialise a workspace")]
async fn initialise_workspace(world: &mut CartularyWorld) {
    run_init(world, None).await;
}

#[when(expr = "I initialise a workspace in {string}")]
async fn initialise_workspace_in(world: &mut CartularyWorld, dir_name: String) {
    run_init(world, Some(dir_name.as_str())).await;
}

async fn run_init(world: &mut CartularyWorld, root_dir: Option<&str>) {
    let dir = world.workspace.as_ref().expect("workspace not initialized");
    let bin = assert_cmd::cargo_bin!("cartu");
    let mut args: Vec<&str> = vec![];
    let root_dir_owned;
    if let Some(rd) = root_dir {
        root_dir_owned = rd.to_string();
        args.extend(["--root-dir", root_dir_owned.as_str()]);
    }
    args.push("init");
    let output = std::process::Command::new(bin)
        .args(&args)
        .current_dir(dir.path())
        .output()
        .expect("failed to run cartu init");
    world.last_output = Some(output);
}