Skip to content

Commit 2f28263

Browse files
committed
available crates
1 parent deeb7a8 commit 2f28263

File tree

1 file changed

+46
-3
lines changed

1 file changed

+46
-3
lines changed

tool/bundle/src/main.rs

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
117129
fn 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() {}"#;
471488
pub 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

Comments
 (0)