use std::{
env, fs,
path::{Path, PathBuf},
sync::Arc,
};
use binstalk::{
errors::{BinstallError, CrateContextError},
fetchers::{Fetcher, GhCrateMeta, QuickInstall, SignaturePolicy},
get_desired_targets,
helpers::{
jobserver_client::LazyJobserverClient,
lazy_gh_api_client::LazyGhApiClient,
remote::{Certificate, Client},
tasks::AutoAbortJoinHandle,
},
ops::{
self,
resolve::{CrateName, Resolution, ResolutionFetch, VersionReqExt},
CargoTomlFetchOverride, Options, Resolver,
},
};
use binstalk_manifests::{
cargo_config::Config,
cargo_toml_binstall::{PkgOverride, Strategy},
crates_manifests::Manifests,
};
use file_format::FileFormat;
use home::cargo_home;
use log::LevelFilter;
use miette::{miette, Report, Result, WrapErr};
use tokio::task::block_in_place;
use tracing::{debug, error, info, warn};
use crate::{args::Args, gh_token, git_credentials, install_path, ui::confirm};
pub fn install_crates(
args: Args,
jobserver_client: LazyJobserverClient,
) -> Result