From 13b2c9f56d4b3bfcbd36651d00a7e3bc08fa0d0b Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Sun, 15 May 2022 18:40:26 +0200 Subject: [PATCH] things --- src/download.rs | 2 +- src/resolve.rs | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/download.rs b/src/download.rs index 221f84a..a1d807e 100644 --- a/src/download.rs +++ b/src/download.rs @@ -74,7 +74,7 @@ pub struct PackageMeta { pub repository: Option, } -#[derive(Default)] +#[derive(Default, Clone)] pub struct NpmClient { reqwest: Client, } diff --git a/src/resolve.rs b/src/resolve.rs index df898a0..98b216c 100644 --- a/src/resolve.rs +++ b/src/resolve.rs @@ -3,12 +3,13 @@ use std::{ sync::{Arc, RwLock}, }; -use color_eyre::{eyre::bail, Result}; +use color_eyre::{eyre::eyre, Result}; use node_semver::Range; use tracing::{debug, info}; use crate::{download::PackageMeta, NpmClient, WrapErr}; +#[derive(Clone)] pub struct ResolveContext { meta_cache: Arc>>>, client: NpmClient, @@ -63,16 +64,16 @@ impl ResolveContext { .filter(|version| version.satisfies(requested_version)) .max(); - match chosen { - Some(version) => { - info!(%version, "Found version"); - self.client - .download_package(name, &meta.versions[version].dist.tarball) - .await - .wrap_err("downloading package")?; - } - None => bail!("could not find matching version for '{requested_version}'"), - } + let version = chosen + .ok_or_else(|| eyre!("could not find matching version for '{requested_version}'"))?; + + let package = &meta.versions[version]; + + info!(%version, "Found version"); + self.client + .download_package(name, &package.dist.tarball) + .await + .wrap_err("downloading package")?; Ok(()) }