@@ -12,7 +12,7 @@ use gleam_core::{
1212 Error , Result ,
1313 build:: { Mode , Target , Telemetry } ,
1414 config:: { GleamVersion , PackageConfig } ,
15- dependency,
15+ dependency:: { self , PackageFetchError } ,
1616 error:: { FileIoAction , FileKind , ShellCommandFailureReason , StandardIoAction } ,
1717 hex:: { self , HEXPM_PUBLIC_KEY } ,
1818 io:: { HttpClient as _, TarUnpacker , WrappedReader } ,
@@ -1231,6 +1231,7 @@ async fn lookup_package(
12311231 }
12321232}
12331233
1234+ #[ derive( Debug ) ]
12341235struct PackageFetcher {
12351236 runtime : tokio:: runtime:: Handle ,
12361237 http : HttpClient ,
@@ -1272,26 +1273,14 @@ impl TarUnpacker for Untar {
12721273}
12731274
12741275impl dependency:: PackageFetcher for PackageFetcher {
1275- fn get_dependencies (
1276- & self ,
1277- package : & str ,
1278- ) -> Result < hexpm:: Package , Box < dyn std:: error:: Error > > {
1276+ fn get_dependencies ( & self , package : & str ) -> Result < hexpm:: Package , PackageFetchError > {
12791277 tracing:: debug!( package = package, "looking_up_hex_package" ) ;
12801278 let config = hexpm:: Config :: new ( ) ;
12811279 let request = hexpm:: get_package_request ( package, None , & config) ;
12821280 let response = self
12831281 . runtime
12841282 . block_on ( self . http . send ( request) )
1285- . map_err ( Box :: new) ?;
1286-
1287- match hexpm:: get_package_response ( response, HEXPM_PUBLIC_KEY ) {
1288- Ok ( a) => Ok ( a) ,
1289- Err ( e) => match e {
1290- hexpm:: ApiError :: NotFound => {
1291- Err ( format ! ( "I couldn't find a package called `{}`" , package) . into ( ) )
1292- }
1293- _ => Err ( e. into ( ) ) ,
1294- } ,
1295- }
1283+ . map_err ( |e| PackageFetchError :: fetch_error ( e. to_string ( ) ) ) ?;
1284+ hexpm:: get_package_response ( response, HEXPM_PUBLIC_KEY ) . map_err ( |e| e. into ( ) )
12961285 }
12971286}
0 commit comments