use super::error::{ProfileError, ProfileResult};
use crate::git::GitError;
use std::path::Path;
fn map_git_error(e: GitError, operation: &str) -> ProfileError {
let detail = match &e {
GitError::CommandFailed { .. } => e.message(),
_ => format!("{operation}: {}", e.message()),
};
ProfileError::GitOperationFailed { operation: detail }
}
pub fn clone_repository(
repo_url: &str,
target_dir: &Path,
git_ref: Option<&str>,
) -> ProfileResult<String> {
crate::git::clone_repository(repo_url, target_dir, git_ref)
.map_err(|e| map_git_error(e, "clone"))
}
pub fn resolve_reference(repo_url: &str, git_ref: &str) -> ProfileResult<String> {
crate::git::resolve_reference(repo_url, git_ref)
.map_err(|e| map_git_error(e, "resolve reference"))
}