use std::path::{Path, PathBuf};
#[derive(Debug, Clone)]
pub struct RepoRef {
pub host: String, pub owner: String, pub repo: String, pub branch: String, pub path: Option<String>, }
#[derive(Debug)]
pub struct FetchResult {
pub entry_local: PathBuf, pub all_files: Vec<PathBuf>,
}
pub trait Provider: Send + Sync {
fn parse_url(&self, url: &str) -> Option<RepoRef>;
fn fetch_tal_tree(
&self,
rf: &RepoRef,
out_root: &Path,
) -> Result<FetchResult, Box<dyn std::error::Error>>;
fn parse_git_url(&self, _url: &str) -> Option<(RepoRef, String)> {
None }
}