From cb2a054b66a29c97e11bf1f644233c85b32f0c00 Mon Sep 17 00:00:00 2001 From: vlad Date: Sun, 20 Apr 2025 23:02:22 +0100 Subject: [PATCH] added the retired package notice --- compiler-cli/src/add.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/compiler-cli/src/add.rs b/compiler-cli/src/add.rs index c817f8d2ea4..d9f222268c2 100644 --- a/compiler-cli/src/add.rs +++ b/compiler-cli/src/add.rs @@ -3,6 +3,7 @@ use camino::{Utf8Path, Utf8PathBuf}; use gleam_core::{ Error, Result, error::{FileIoAction, FileKind}, + io::HttpClient as HttpClientTrait, paths::ProjectPaths, }; @@ -10,6 +11,7 @@ use crate::{ cli, dependencies::{UseManifest, parse_gleam_add_specifier}, fs, + http::HttpClient, }; pub fn command(paths: &ProjectPaths, packages_to_add: Vec, dev: bool) -> Result<()> { @@ -70,6 +72,32 @@ pub fn command(paths: &ProjectPaths, packages_to_add: Vec, dev: bool) -> } cli::print_added(&format!("{added_package} v{version}")); + + let runtime = tokio::runtime::Runtime::new().expect("Unable to start Tokio async runtime"); + let hex_config = hexpm::Config::new(); + let api_key = crate::hex::HexAuthentication::new(&runtime, hex_config.clone()) + .get_or_create_api_key()?; + let http = HttpClient::new(); + let request = hexpm::get_package_release_request( + added_package.as_str(), + version.to_string().as_str(), + Some(api_key.as_str()), + &hex_config, + ); + let response = runtime.block_on(http.send(request))?; + let parsed_package = + hexpm::get_package_release_response(response).expect("Failed to parse package data"); + + if let Some(status) = parsed_package.retirement_status { + println!( + "Warning: Package {} {}.{}.{} is retired for reason: {}", + added_package, + version.major, + version.minor, + version.patch, + status.reason.to_str() + ) + } } // Write the updated config