use anyhow::Result;
use std::collections::HashMap;
use std::path::PathBuf;
use super::builder::WorktreeBuilder;
use super::{Checkpoint, WorktreeManager};
use crate::config::mapreduce::MergeWorkflow;
use crate::subprocess::SubprocessManager;
impl WorktreeManager {
pub fn new(repo_path: PathBuf, subprocess: SubprocessManager) -> Result<Self> {
Self::with_config(repo_path, subprocess, 0, None, HashMap::new())
}
pub fn with_config(
repo_path: PathBuf,
subprocess: SubprocessManager,
verbosity: u8,
custom_merge_workflow: Option<MergeWorkflow>,
workflow_env: HashMap<String, String>,
) -> Result<Self> {
WorktreeBuilder::new(repo_path, subprocess)
.verbosity(verbosity)
.custom_merge_workflow(custom_merge_workflow)
.workflow_env(workflow_env)
.build()
}
pub fn create_checkpoint(&self, session_name: &str, checkpoint: Checkpoint) -> Result<()> {
self.update_session_state(session_name, |state| {
state.last_checkpoint = Some(checkpoint);
state.resumable = true;
})
}
}