From b475d6a6a4ffd9f28c8c29baf4e1204525155a47 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Wed, 18 Jan 2023 16:34:26 +0100 Subject: [PATCH] Provide better errors when packages aren't found. --- crates/aiken-project/src/deps/downloader.rs | 12 +++++++++--- crates/aiken-project/src/error.rs | 2 +- crates/aiken-project/src/paths.rs | 1 + 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/crates/aiken-project/src/deps/downloader.rs b/crates/aiken-project/src/deps/downloader.rs index ad3868c9..b350b4bb 100644 --- a/crates/aiken-project/src/deps/downloader.rs +++ b/crates/aiken-project/src/deps/downloader.rs @@ -78,13 +78,19 @@ impl<'a> Downloader<'a> { .get(url) .header("User-Agent", "aiken-lang") .send() - .await? - .bytes() .await?; + if response.status().as_u16() >= 400 { + return Err(Error::UnknownPackageVersion { + package: package.clone(), + }); + } + + let bytes = response.bytes().await?; + // let PackageSource::Github { url } = &package.source; - tokio::fs::write(&zipball_path, response).await?; + tokio::fs::write(&zipball_path, bytes).await?; Ok(true) } diff --git a/crates/aiken-project/src/error.rs b/crates/aiken-project/src/error.rs index 32855568..861c2038 100644 --- a/crates/aiken-project/src/error.rs +++ b/crates/aiken-project/src/error.rs @@ -323,7 +323,7 @@ impl Diagnostic for Error { Error::Http(_) => None, Error::ZipExtract(_) => None, Error::JoinError(_) => None, - Error::UnknownPackageVersion{..} => None, + Error::UnknownPackageVersion{..} => Some(Box::new("Perhaps, double-check the package repository and version?")), } } diff --git a/crates/aiken-project/src/paths.rs b/crates/aiken-project/src/paths.rs index def9946e..2d2af521 100644 --- a/crates/aiken-project/src/paths.rs +++ b/crates/aiken-project/src/paths.rs @@ -37,6 +37,7 @@ pub fn default_aiken_cache() -> PathBuf { .join("aiken") } +#[derive(Debug)] pub struct CacheKey { key: String, }