use std::path::{Path, PathBuf};
use memstead_git_branch::mem_cache::{self, InstallError, InstallOutcome, TargetMem};
use memstead_git_branch::vcs::CommitContext;
#[derive(Debug)]
pub enum ReadMemResult {
Installed {
archive: PathBuf,
outcome: InstallOutcome,
},
Failed {
archive: PathBuf,
error: InstallError,
},
}
pub fn install_read_mems(
archives: &[PathBuf],
target: TargetMem<'_>,
ctx: &CommitContext<'_>,
commit_message: &str,
cwd: &Path,
writable_mem_names: &[&str],
) -> Vec<ReadMemResult> {
archives
.iter()
.map(|archive| {
let archive = if archive.is_absolute() {
archive.clone()
} else {
cwd.join(archive)
};
match mem_cache::install_read_mem(
&archive,
target,
ctx,
commit_message,
writable_mem_names,
) {
Ok(outcome) => ReadMemResult::Installed { archive, outcome },
Err(error) => ReadMemResult::Failed { archive, error },
}
})
.collect()
}