@@ -39,6 +39,7 @@ use crate::{
3939 build_lock:: { BuildLock , Guard } ,
4040 cli,
4141 fs:: { self , ProjectIO } ,
42+ get_hex_config,
4243 http:: HttpClient ,
4344 text_layout:: space_table,
4445} ;
@@ -66,12 +67,12 @@ pub enum CheckMajorVersions {
6667}
6768
6869pub fn list ( paths : & ProjectPaths ) -> Result < ( ) > {
69- let ( _, manifest) = get_manifest_details ( paths) ?;
70+ let ( _, manifest) = get_manifest_details ( paths, & get_hex_config ( ) ? ) ?;
7071 list_manifest_packages ( std:: io:: stdout ( ) , manifest)
7172}
7273
7374pub fn tree ( paths : & ProjectPaths , options : TreeOptions ) -> Result < ( ) > {
74- let ( config, manifest) = get_manifest_details ( paths) ?;
75+ let ( config, manifest) = get_manifest_details ( paths, & get_hex_config ( ) ? ) ?;
7576
7677 // Initialize the root package since it is not part of the manifest
7778 let root_package = ManifestPackage {
@@ -92,10 +93,13 @@ pub fn tree(paths: &ProjectPaths, options: TreeOptions) -> Result<()> {
9293 list_package_and_dependencies_tree ( std:: io:: stdout ( ) , options, packages. clone ( ) , config. name )
9394}
9495
95- fn get_manifest_details ( paths : & ProjectPaths ) -> Result < ( PackageConfig , Manifest ) > {
96+ fn get_manifest_details (
97+ paths : & ProjectPaths ,
98+ hex_config : & hexpm:: Config ,
99+ ) -> Result < ( PackageConfig , Manifest ) > {
96100 let runtime = tokio:: runtime:: Runtime :: new ( ) . expect ( "Unable to start Tokio async runtime" ) ;
97101 let config = crate :: config:: root_config ( paths) ?;
98- let package_fetcher = PackageFetcher :: new ( runtime. handle ( ) . clone ( ) ) ;
102+ let package_fetcher = PackageFetcher :: new ( runtime. handle ( ) . clone ( ) , hex_config . clone ( ) ) ;
99103 let dependency_manager = DependencyManagerConfig {
100104 use_manifest : UseManifest :: Yes ,
101105 check_major_versions : CheckMajorVersions :: No ,
@@ -105,6 +109,7 @@ fn get_manifest_details(paths: &ProjectPaths) -> Result<(PackageConfig, Manifest
105109 package_fetcher,
106110 cli:: Reporter :: new ( ) ,
107111 Mode :: Dev ,
112+ hex_config. clone ( ) ,
108113 ) ;
109114 let manifest = dependency_manager
110115 . resolve_versions ( paths, & config, Vec :: new ( ) ) ?
@@ -220,10 +225,11 @@ fn list_dependencies_tree(
220225}
221226
222227pub fn outdated ( paths : & ProjectPaths ) -> Result < ( ) > {
223- let ( _, manifest) = get_manifest_details ( paths) ?;
228+ let hex_config = get_hex_config ( ) ?;
229+ let ( _, manifest) = get_manifest_details ( paths, & hex_config) ?;
224230
225231 let runtime = tokio:: runtime:: Runtime :: new ( ) . expect ( "Unable to start Tokio async runtime" ) ;
226- let package_fetcher = PackageFetcher :: new ( runtime. handle ( ) . clone ( ) ) ;
232+ let package_fetcher = PackageFetcher :: new ( runtime. handle ( ) . clone ( ) , hex_config ) ;
227233
228234 let version_updates = dependency:: check_for_version_updates ( & manifest, & package_fetcher) ;
229235
@@ -400,13 +406,15 @@ pub fn resolve_and_download<Telem: Telemetry>(
400406) -> Result < Manifest > {
401407 // Start event loop so we can run async functions to call the Hex API
402408 let runtime = tokio:: runtime:: Runtime :: new ( ) . expect ( "Unable to start Tokio async runtime" ) ;
403- let package_fetcher = PackageFetcher :: new ( runtime. handle ( ) . clone ( ) ) ;
409+ let hex_config = get_hex_config ( ) ?;
410+ let package_fetcher = PackageFetcher :: new ( runtime. handle ( ) . clone ( ) , hex_config. clone ( ) ) ;
404411
405412 let dependency_manager = config. into_dependency_manager (
406413 runtime. handle ( ) . clone ( ) ,
407414 package_fetcher,
408415 telemetry,
409416 Mode :: Dev ,
417+ hex_config,
410418 ) ;
411419
412420 dependency_manager. resolve_and_download_versions ( paths, new_package, packages_to_update)
@@ -443,6 +451,7 @@ async fn add_missing_packages<Telem: Telemetry>(
443451 local : & LocalPackages ,
444452 project_name : EcoString ,
445453 telemetry : & Telem ,
454+ hex_config : & hexpm:: Config ,
446455) -> Result < ( ) , Error > {
447456 let missing_packages = local. missing_local_packages ( manifest, & project_name) ;
448457
@@ -469,7 +478,14 @@ async fn add_missing_packages<Telem: Telemetry>(
469478 // If we need to download at-least one package
470479 if missing_hex_packages. peek ( ) . is_some ( ) || !missing_git_packages. is_empty ( ) {
471480 let http = HttpClient :: boxed ( ) ;
472- let downloader = hex:: Downloader :: new ( fs. clone ( ) , fs, http, Untar :: boxed ( ) , paths. clone ( ) ) ;
481+ let downloader = hex:: Downloader :: new (
482+ fs. clone ( ) ,
483+ fs,
484+ http,
485+ Untar :: boxed ( ) ,
486+ hex_config. clone ( ) ,
487+ paths. clone ( ) ,
488+ ) ;
473489 let start = Instant :: now ( ) ;
474490 telemetry. downloading_package ( "packages" ) ;
475491 downloader
@@ -1089,13 +1105,13 @@ async fn lookup_package(
10891105 name : String ,
10901106 version : Version ,
10911107 provided : & HashMap < EcoString , ProvidedPackage > ,
1108+ hex_config : & hexpm:: Config ,
10921109) -> Result < ManifestPackage > {
10931110 match provided. get ( name. as_str ( ) ) {
10941111 Some ( provided_package) => Ok ( provided_package. to_manifest_package ( name. as_str ( ) ) ) ,
10951112 None => {
1096- let config = hexpm:: Config :: new ( ) ;
10971113 let release =
1098- hex:: get_package_release ( & name, & version, & config , & HttpClient :: new ( ) ) . await ?;
1114+ hex:: get_package_release ( & name, & version, hex_config , & HttpClient :: new ( ) ) . await ?;
10991115 let build_tools = release
11001116 . meta
11011117 . build_tools
@@ -1125,14 +1141,16 @@ struct PackageFetcher {
11251141 runtime_cache : RefCell < HashMap < String , Rc < hexpm:: Package > > > ,
11261142 runtime : tokio:: runtime:: Handle ,
11271143 http : HttpClient ,
1144+ hex_config : hexpm:: Config ,
11281145}
11291146
11301147impl PackageFetcher {
1131- pub fn new ( runtime : tokio:: runtime:: Handle ) -> Self {
1148+ pub fn new ( runtime : tokio:: runtime:: Handle , hex_config : hexpm :: Config ) -> Self {
11321149 Self {
11331150 runtime_cache : RefCell :: new ( HashMap :: new ( ) ) ,
11341151 runtime,
11351152 http : HttpClient :: new ( ) ,
1153+ hex_config,
11361154 }
11371155 }
11381156
@@ -1183,8 +1201,7 @@ impl dependency::PackageFetcher for PackageFetcher {
11831201 }
11841202
11851203 tracing:: debug!( package = package, "looking_up_hex_package" ) ;
1186- let config = hexpm:: Config :: new ( ) ;
1187- let request = hexpm:: repository_v2_get_package_request ( package, None , & config) ;
1204+ let request = hexpm:: repository_v2_get_package_request ( package, None , & self . hex_config ) ;
11881205 let response = self
11891206 . runtime
11901207 . block_on ( self . http . send ( request) )
0 commit comments