use crate::acquire::sources::RepoSource;
use crate::auth::SecureString;
use crate::core::AcquisitionReport;
use anyhow::Result;
use async_trait::async_trait;
use std::path::{Path, PathBuf};
#[derive(Default, Clone)]
pub struct AcquireOptions {
pub token: Option<SecureString>,
pub ssh_key: Option<PathBuf>,
pub depth: Option<u32>,
pub single_branch: bool,
pub recurse_submodules: bool,
pub lfs: bool,
pub branch: Option<String>,
}
#[async_trait]
pub trait AcquisitionStrategy: Send + Sync {
async fn acquire(
&self,
source: &RepoSource,
target: &Path,
opts: &AcquireOptions,
) -> Result<AcquisitionReport>;
}