@@ -114,15 +114,32 @@ struct CrateInfo {
114114 external_dependencies : Vec < String > ,
115115}
116116
117+ fn list_available_crates ( crates : & HashMap < String , CrateInfo > ) -> String {
118+ let mut crate_names: Vec < _ > = crates. keys ( ) . collect ( ) ;
119+ crate_names. sort ( ) ;
120+
121+ let mut result = String :: new ( ) ;
122+ result. push_str ( "Available crates:\n " ) ;
123+ for name in crate_names {
124+ result. push_str ( & format ! ( " - {}\n " , name) ) ;
125+ }
126+ result
127+ }
128+
117129fn bundle_crate ( crate_name : & str , workspace_path : & Path ) -> Result < String > {
118130 let libs_path = workspace_path. join ( "libs" ) ;
119131
120132 let mut crates = HashMap :: new ( ) ;
121133 collect_crates ( & libs_path, & mut crates) ?;
122134
123- let target_crate_info = crates
124- . get ( crate_name)
125- . ok_or_else ( || anyhow:: anyhow!( "Crate '{}' not found in workspace" , crate_name) ) ?;
135+ let target_crate_info = crates. get ( crate_name) . ok_or_else ( || {
136+ let available_crates = list_available_crates ( & crates) ;
137+ anyhow:: anyhow!(
138+ "Crate '{}' not found in workspace.\n \n {}" ,
139+ crate_name,
140+ available_crates
141+ )
142+ } ) ?;
126143
127144 check_external_dependencies ( crate_name, & crates) ;
128145
@@ -471,4 +488,30 @@ pub fn world() {}"#;
471488pub fn world() {}"# ;
472489 assert_eq ! ( result, expected) ;
473490 }
491+
492+ #[ test]
493+ fn test_list_available_crates ( ) {
494+ let mut crates = HashMap :: new ( ) ;
495+ crates. insert (
496+ "crate_a" . to_string ( ) ,
497+ CrateInfo {
498+ content : "pub fn a() {}" . to_string ( ) ,
499+ dependencies : vec ! [ ] ,
500+ external_dependencies : vec ! [ ] ,
501+ } ,
502+ ) ;
503+ crates. insert (
504+ "crate_b" . to_string ( ) ,
505+ CrateInfo {
506+ content : "pub fn b() {}" . to_string ( ) ,
507+ dependencies : vec ! [ ] ,
508+ external_dependencies : vec ! [ ] ,
509+ } ,
510+ ) ;
511+
512+ let result = list_available_crates ( & crates) ;
513+ assert ! ( result. contains( "Available crates:" ) ) ;
514+ assert ! ( result. contains( " - crate_a" ) ) ;
515+ assert ! ( result. contains( " - crate_b" ) ) ;
516+ }
474517}
0 commit comments