@@ -476,6 +476,25 @@ fn install_package(c: cargo, wd: str, pkg: package) {
476
476
}
477
477
}
478
478
479
+ fn cargo_suggestion ( c : cargo , syncing : bool , fallback : fn ( ) )
480
+ {
481
+ if c. sources . size ( ) == 0 u {
482
+ error ( "No sources defined. You may wish to run " +
483
+ "\" cargo init\" then \" cargo sync\" ." ) ;
484
+ ret;
485
+ }
486
+ if !syncing {
487
+ let npkg = 0 u;
488
+ c. sources . values ( { |v| npkg += vec:: len ( v. packages ) } ) ;
489
+ if npkg == 0 u {
490
+ error ( "No packages known. You may wish to run " +
491
+ "\" cargo sync\" ." ) ;
492
+ ret;
493
+ }
494
+ }
495
+ fallback ( ) ;
496
+ }
497
+
479
498
fn install_uuid ( c : cargo , wd : str , uuid : str ) {
480
499
let ps = [ ] ;
481
500
for_each_package ( c, { |s, p|
@@ -489,7 +508,7 @@ fn install_uuid(c: cargo, wd: str, uuid: str) {
489
508
install_package ( c, wd, p) ;
490
509
ret;
491
510
} else if vec:: len ( ps) == 0 u {
492
- error ( "No packages." ) ;
511
+ cargo_suggestion ( c , false , { || error ( "No packages match uuid." ) ; } ) ;
493
512
ret;
494
513
}
495
514
error ( "Found multiple packages:" ) ;
@@ -510,7 +529,7 @@ fn install_named(c: cargo, wd: str, name: str) {
510
529
install_package ( c, wd, p) ;
511
530
ret;
512
531
} else if vec:: len ( ps) == 0 u {
513
- error ( "No packages." ) ;
532
+ cargo_suggestion ( c , false , { || error ( "No packages match name." ) ; } ) ;
514
533
ret;
515
534
}
516
535
error ( "Found multiple packages:" ) ;
@@ -651,6 +670,7 @@ fn cmd_sync(c: cargo, argv: [str]) {
651
670
if vec:: len ( argv) == 3 u {
652
671
sync_one ( c, argv[ 2 ] , c. sources . get ( argv[ 2 ] ) ) ;
653
672
} else {
673
+ cargo_suggestion ( c, true , { || } ) ;
654
674
c. sources . items { |k, v|
655
675
sync_one ( c, k, v) ;
656
676
}
0 commit comments