Support for checking multi-targets

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
Jiahao XU 2022-06-07 15:11:04 +10:00
parent 0c83d010b1
commit 603955b848
No known key found for this signature in database
GPG key ID: 591C0B03040416D6

View file

@ -217,18 +217,24 @@ async fn entry() -> Result<()> {
.join(format!("pkg-{}.{}", opts.name, meta.pkg_fmt));
debug!("Using temporary download path: {}", pkg_path.display());
let fetcher_data = Data {
name: package.name.clone(),
target: opts.target.clone(),
version: package.version.clone(),
repo: package.repository.clone(),
meta: meta.clone(),
};
let fetcher_data: Vec<_> = detect_targets()
.await
.into_iter()
.map(|target| Data {
name: package.name.clone(),
target: target.into(),
version: package.version.clone(),
repo: package.repository.clone(),
meta: meta.clone(),
})
.collect();
// Try github releases, then quickinstall
let mut fetchers = MultiFetcher::default();
fetchers.add(GhCrateMeta::new(&fetcher_data).await);
fetchers.add(QuickInstall::new(&fetcher_data).await);
for data in &fetcher_data {
fetchers.add(GhCrateMeta::new(data).await);
fetchers.add(QuickInstall::new(data).await);
}
match fetchers.first_available().await {
Some(fetcher) => {