use crate::cook::execution::errors::MapReduceError;
use crate::cook::execution::mapreduce::environment::MapEnv;
use std::path::PathBuf;
use stillwater::{from_async, Effect};
#[derive(Debug, Clone)]
pub struct Worktree {
pub name: String,
pub path: PathBuf,
pub branch: String,
}
pub fn create_worktree_effect(
name: &str,
_parent_branch: &str,
) -> impl Effect<Output = Worktree, Error = MapReduceError, Env = MapEnv> {
let name = name.to_string();
from_async(move |env: &MapEnv| {
let name = name.clone();
let _worktree_manager = env.worktree_manager.clone();
async move {
let base_path = std::env::temp_dir().join("prodigy-worktrees");
let worktree_path = base_path.join(&name);
Ok(Worktree {
name: name.clone(),
path: worktree_path,
branch: format!("agent-{}", name),
})
}
})
}
pub fn remove_worktree_effect(
_worktree: &Worktree,
) -> impl Effect<Output = (), Error = MapReduceError, Env = MapEnv> {
from_async(move |env: &MapEnv| {
let _worktree_manager = env.worktree_manager.clone();
async move {
Ok(())
}
})
}
#[cfg(test)]
mod tests {
}