|
23 | 23 | //! repeats until the queue is empty.
|
24 | 24 |
|
25 | 25 | use std::collections::{BTreeSet, HashMap, HashSet};
|
| 26 | +use std::fmt::Write; |
26 | 27 | use std::hash::{Hash, Hasher};
|
27 | 28 | use std::sync::Arc;
|
28 | 29 |
|
@@ -1526,19 +1527,41 @@ fn find_named_targets<'a>(
|
1526 | 1527 | };
|
1527 | 1528 |
|
1528 | 1529 | if proposals.is_empty() {
|
1529 |
| - let targets = packages.iter().flat_map(|pkg| { |
1530 |
| - pkg.targets() |
1531 |
| - .iter() |
1532 |
| - .filter(|target| is_expected_kind(target)) |
1533 |
| - }); |
1534 |
| - let suggestion = closest_msg(target_name, targets, |t| t.name()); |
1535 |
| - anyhow::bail!( |
1536 |
| - "no {} target {} `{}`{}", |
| 1530 | + let targets = packages |
| 1531 | + .iter() |
| 1532 | + .flat_map(|pkg| { |
| 1533 | + pkg.targets() |
| 1534 | + .iter() |
| 1535 | + .filter(|target| is_expected_kind(target)) |
| 1536 | + }) |
| 1537 | + .collect::<Vec<_>>(); |
| 1538 | + let suggestion = closest_msg(target_name, targets.iter(), |t| t.name()); |
| 1539 | + if !suggestion.is_empty() { |
| 1540 | + anyhow::bail!( |
| 1541 | + "no {} target {} `{}`{}", |
| 1542 | + target_desc, |
| 1543 | + if is_glob { "matches pattern" } else { "named" }, |
| 1544 | + target_name, |
| 1545 | + suggestion |
| 1546 | + ); |
| 1547 | + } |
| 1548 | + let mut msg = String::new(); |
| 1549 | + writeln!( |
| 1550 | + msg, |
| 1551 | + "no {} target {} `{}`.", |
1537 | 1552 | target_desc,
|
1538 | 1553 | if is_glob { "matches pattern" } else { "named" },
|
1539 | 1554 | target_name,
|
1540 |
| - suggestion |
1541 |
| - ); |
| 1555 | + )?; |
| 1556 | + if targets.is_empty() { |
| 1557 | + writeln!(msg, "No {} targets available.", target_desc)?; |
| 1558 | + anyhow::bail!(msg); |
| 1559 | + } |
| 1560 | + writeln!(msg, "Available {} targets:", target_desc)?; |
| 1561 | + for target in targets { |
| 1562 | + writeln!(msg, " {}", target.name())?; |
| 1563 | + } |
| 1564 | + anyhow::bail!(msg); |
1542 | 1565 | }
|
1543 | 1566 | Ok(proposals)
|
1544 | 1567 | }
|
|
0 commit comments