pray-core 1.20.0

Core library for Prayfile, the package manager for the language placed before inference
Documentation
use crate::resolve_git::finalize_git_repository;
use crate::resolve_git_materialize::materialize_catalog_tree;
use crate::resolve_git_paths::git_source_cache_directory_with_subdir;
use crate::resolve_git_store::ensure_global_git_db;
use crate::PrayResult;
use std::path::{Path, PathBuf};

pub(crate) fn ensure_git_repository(
    project_root: &Path,
    clone_url: &str,
    refresh: bool,
    pinned_revision: Option<&str>,
    sparse_subdir: Option<&str>,
    offline: bool,
) -> PrayResult<(PathBuf, String)> {
    let (db, revision) =
        ensure_global_git_db(clone_url, pinned_revision, refresh, offline, project_root)?;
    let catalog = git_source_cache_directory_with_subdir(project_root, clone_url, sparse_subdir);
    materialize_catalog_tree(&db, &catalog, &revision, sparse_subdir, refresh)?;
    finalize_git_repository(clone_url, &db, catalog, revision)
}