@@ -289,7 +289,7 @@ fn resolve_dependency(
289
289
} else {
290
290
let mut source = crate :: sources:: GitSource :: new ( src. source_id ( ) ?, config) ?;
291
291
let packages = source. read_packages ( ) ?;
292
- let package = infer_package ( packages, & src, true ) ?;
292
+ let package = infer_package_for_git_source ( packages, & src) ?;
293
293
Dependency :: from ( package. summary ( ) )
294
294
} ;
295
295
selected
@@ -313,8 +313,10 @@ fn resolve_dependency(
313
313
selected
314
314
} else {
315
315
let source = crate :: sources:: PathSource :: new ( & path, src. source_id ( ) ?, config) ;
316
- let packages = source. read_packages ( ) ?;
317
- let package = infer_package ( packages, & src, false ) ?;
316
+ let mut packages = source. read_packages ( ) ?;
317
+ let package = packages
318
+ . pop ( )
319
+ . ok_or ( anyhow:: anyhow!( "no packages found at `{src}`" ) ) ?;
318
320
Dependency :: from ( package. summary ( ) )
319
321
} ;
320
322
selected
@@ -599,10 +601,9 @@ fn select_package(
599
601
}
600
602
}
601
603
602
- fn infer_package (
604
+ fn infer_package_for_git_source (
603
605
mut packages : Vec < Package > ,
604
606
src : & dyn std:: fmt:: Display ,
605
- is_git_source : bool ,
606
607
) -> CargoResult < Package > {
607
608
let package = match packages. len ( ) {
608
609
0 => {
@@ -616,7 +617,7 @@ fn infer_package(
616
617
. collect ( ) ;
617
618
names. sort_unstable ( ) ;
618
619
anyhow:: bail!(
619
- "multiple packages found at `{src}`:\n {}{} " ,
620
+ "multiple packages found at `{src}`:\n {}\n To disambiguate, run `cargo add --git {src} <package>` " ,
620
621
names
621
622
. iter( )
622
623
. map( |s| s. to_string( ) )
@@ -627,11 +628,6 @@ fn infer_package(
627
628
} )
628
629
. into_iter( )
629
630
. format( "\n " ) ,
630
- if is_git_source {
631
- format!( "\n To disambiguate, run `cargo add --git {src} <crate>`" )
632
- } else {
633
- "" . to_owned( )
634
- }
635
631
) ;
636
632
}
637
633
} ;
0 commit comments