easy-install 1.3.11

easy-install
Documentation
use crate::InstallConfig;
use crate::install::install_artifacts;
use crate::install::manfiest::install_from_manfiest;
use crate::tool::{filter_artifacts, get_artifact_url, not_found_asset_message};
use crate::types::{Output, Repo};
use crate::error::Result;
use tracing::trace;

pub(crate) async fn install_from_github(repo: &Repo, config: &InstallConfig) -> Result<Output> {
    trace!("install_from_git {}", repo);
    if let Ok(man) = repo
        .get_manfiest(config.retry, config.proxy, config.timeout)
        .await
    {
        return install_from_manfiest(
            man,
            &repo
                .get_manfiest_url(config.proxy, config.retry, config.timeout)
                .await?,
            config,
        )
        .await;
    }

    let artifacts = repo.get_raw_artifacts(config.retry, config.timeout).await?;
    let available: Vec<String> = artifacts.assets.iter().map(|a| a.name.clone()).collect();
    let artifact_url = get_artifact_url(artifacts, config)?;
    if artifact_url.is_empty() {
        not_found_asset_message(&repo.get_gh_url(), config, Some(&available));
        return Ok(Output::new());
    }

    let artifact_url = filter_artifacts(artifact_url, config);
    install_artifacts(artifact_url, config).await
}