use cucumber::when;
use crate::CartularyWorld;
#[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);
}