@@ -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 } ,
@@ -1229,6 +1229,7 @@ async fn lookup_package(
12291229 }
12301230}
12311231
1232+ #[ derive( Debug ) ]
12321233struct PackageFetcher {
12331234 runtime : tokio:: runtime:: Handle ,
12341235 http : HttpClient ,
@@ -1270,26 +1271,14 @@ impl TarUnpacker for Untar {
12701271}
12711272
12721273impl dependency:: PackageFetcher for PackageFetcher {
1273- fn get_dependencies (
1274- & self ,
1275- package : & str ,
1276- ) -> Result < hexpm:: Package , Box < dyn std:: error:: Error > > {
1274+ fn get_dependencies ( & self , package : & str ) -> Result < hexpm:: Package , PackageFetchError > {
12771275 tracing:: debug!( package = package, "looking_up_hex_package" ) ;
12781276 let config = hexpm:: Config :: new ( ) ;
12791277 let request = hexpm:: get_package_request ( package, None , & config) ;
12801278 let response = self
12811279 . runtime
12821280 . block_on ( self . http . send ( request) )
1283- . map_err ( Box :: new) ?;
1284-
1285- match hexpm:: get_package_response ( response, HEXPM_PUBLIC_KEY ) {
1286- Ok ( a) => Ok ( a) ,
1287- Err ( e) => match e {
1288- hexpm:: ApiError :: NotFound => {
1289- Err ( format ! ( "I couldn't find a package called `{}`" , package) . into ( ) )
1290- }
1291- _ => Err ( e. into ( ) ) ,
1292- } ,
1293- }
1281+ . map_err ( |e| PackageFetchError :: fetch_error ( e. to_string ( ) ) ) ?;
1282+ hexpm:: get_package_response ( response, HEXPM_PUBLIC_KEY ) . map_err ( |e| e. into ( ) )
12941283 }
12951284}
0 commit comments