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, }