Don't show (*) deduplicate if a node doesn't have any dependencies to show.

This commit is contained in:
Eric Huss 2020-04-02 11:25:20 -07:00
parent 9dc56c6280
commit 6868215982
4 changed files with 42 additions and 29 deletions

View file

@ -117,6 +117,11 @@ impl<'a> Graph<'a> {
} }
} }
/// Returns `true` if the given node has any outgoing edges.
pub fn has_outgoing_edges(&self, index: usize) -> bool {
!self.edges[index].0.is_empty()
}
/// Gets a node by index. /// Gets a node by index.
pub fn node(&self, index: usize) -> &Node { pub fn node(&self, index: usize) -> &Node {
&self.nodes[index] &self.nodes[index]

View file

@ -249,7 +249,15 @@ fn print_node<'a>(
} }
let in_cycle = print_stack.contains(&node_index); let in_cycle = print_stack.contains(&node_index);
let star = if new && !in_cycle { "" } else { " (*)" }; // If this node does not have any outgoing edges, don't include the (*)
// since there isn't really anything "deduplicated", and it generally just
// adds noise.
let has_deps = graph.has_outgoing_edges(node_index);
let star = if (new && !in_cycle) || !has_deps {
""
} else {
" (*)"
};
println!("{}{}", format.display(graph, node_index), star); println!("{}{}", format.display(graph, node_index), star);
if !new || in_cycle { if !new || in_cycle {

View file

@ -47,7 +47,7 @@ foo v0.1.0 ([..]/foo)
a v1.0.0 a v1.0.0
b v1.0.0 b v1.0.0
c v1.0.0 c v1.0.0
c v1.0.0 (*) c v1.0.0
[build-dependencies] [build-dependencies]
bdep v1.0.0 bdep v1.0.0
b v1.0.0 (*) b v1.0.0 (*)
@ -109,7 +109,7 @@ b v0.1.0 ([..]/foo/b)
c v1.0.0 ([..]/foo/c) c v1.0.0 ([..]/foo/c)
somedep v1.0.0 somedep v1.0.0
c v1.0.0 ([..]/foo/c) (*) c v1.0.0 ([..]/foo/c)
", ",
) )
.run(); .run();
@ -379,7 +379,7 @@ foo v0.1.0 ([..]/foo)
pm_host v1.0.0 pm_host v1.0.0
[build-dependencies] [build-dependencies]
build_host_dep v1.0.0 build_host_dep v1.0.0
hostdep v1.0.0 (*) hostdep v1.0.0
", ",
) )
.run(); .run();
@ -430,8 +430,8 @@ foo v0.1.0 ([..]/foo)
targetdep v1.0.0 targetdep v1.0.0
[build-dependencies] [build-dependencies]
build_host_dep v1.0.0 build_host_dep v1.0.0
hostdep v1.0.0 (*) hostdep v1.0.0
targetdep v1.0.0 (*) targetdep v1.0.0
build_target_dep v1.0.0 build_target_dep v1.0.0
[dev-dependencies] [dev-dependencies]
devdep v1.0.0 devdep v1.0.0
@ -561,7 +561,7 @@ foo v0.1.0 ([..]/foo)
c v1.0.0 c v1.0.0
b2 v1.0.0 b2 v1.0.0
d v1.0.0 d v1.0.0
c v1.0.0 (*) c v1.0.0
", ",
) )
.run(); .run();
@ -572,7 +572,7 @@ foo v0.1.0 ([..]/foo)
c v1.0.0 c v1.0.0
b1 v1.0.0 b1 v1.0.0
foo v0.1.0 ([..]/foo) foo v0.1.0 ([..]/foo)
foo v0.1.0 ([..]/foo) (*) foo v0.1.0 ([..]/foo)
", ",
) )
.run(); .run();
@ -608,7 +608,7 @@ foo v0.1.0 ([..]/foo)
common v1.0.0 common v1.0.0
[build-dependencies] [build-dependencies]
bdep v1.0.0 bdep v1.0.0
common v1.0.0 (*) common v1.0.0
", ",
) )
.run(); .run();
@ -620,7 +620,7 @@ common v1.0.0
bdep v1.0.0 bdep v1.0.0
[build-dependencies] [build-dependencies]
foo v0.1.0 ([..]/foo) foo v0.1.0 ([..]/foo)
foo v0.1.0 ([..]/foo) (*) foo v0.1.0 ([..]/foo)
", ",
) )
.run(); .run();
@ -637,7 +637,7 @@ foo v0.1.0 ([..]/foo)
a v1.0.0 a v1.0.0
b v1.0.0 b v1.0.0
c v1.0.0 c v1.0.0
c v1.0.0 (*) c v1.0.0
bdep v1.0.0 bdep v1.0.0
b v1.0.0 (*) b v1.0.0 (*)
devdep v1.0.0 devdep v1.0.0
@ -658,7 +658,7 @@ fn prefix_depth() {
1a v1.0.0 1a v1.0.0
2b v1.0.0 2b v1.0.0
3c v1.0.0 3c v1.0.0
1c v1.0.0 (*) 1c v1.0.0
1bdep v1.0.0 1bdep v1.0.0
2b v1.0.0 (*) 2b v1.0.0 (*)
1devdep v1.0.0 1devdep v1.0.0
@ -821,7 +821,7 @@ dog v1.0.0
a v0.1.0 ([..]/foo/a) a v0.1.0 ([..]/foo/a)
dog v2.0.0 dog v2.0.0
a v0.1.0 ([..]/foo/a) (*) a v0.1.0 ([..]/foo/a)
", ",
) )
.run(); .run();
@ -834,7 +834,7 @@ cat v1.0.0
b v0.1.0 ([..]/foo/b) b v0.1.0 ([..]/foo/b)
cat v2.0.0 cat v2.0.0
b v0.1.0 ([..]/foo/b) (*) b v0.1.0 ([..]/foo/b)
", ",
) )
.run(); .run();
@ -850,7 +850,7 @@ foo v0.1.0 ([..]/foo)
|-- a v1.0.0 |-- a v1.0.0
| `-- b v1.0.0 | `-- b v1.0.0
| `-- c v1.0.0 | `-- c v1.0.0
`-- c v1.0.0 (*) `-- c v1.0.0
[build-dependencies] [build-dependencies]
`-- bdep v1.0.0 `-- bdep v1.0.0
`-- b v1.0.0 (*) `-- b v1.0.0 (*)
@ -1076,7 +1076,7 @@ optdep v1.0.0
bar v1.0.0 bar v1.0.0
foo v0.1.0 ([..]/foo) foo v0.1.0 ([..]/foo)
[build-dependencies] [build-dependencies]
foo v0.1.0 ([..]/foo) (*) foo v0.1.0 ([..]/foo)
", ",
) )
.run(); .run();
@ -1103,7 +1103,7 @@ bar v1.0.0
bar v1.0.0 bar v1.0.0
[build-dependencies] [build-dependencies]
foo v0.1.0 ([..]/foo) (*) foo v0.1.0 ([..]/foo)
", ",
) )
.run(); .run();
@ -1191,7 +1191,7 @@ somedep v1.0.0
somedep v1.0.0 somedep v1.0.0
foo v0.1.0 ([..]/foo) foo v0.1.0 ([..]/foo)
pm v1.0.0 pm v1.0.0
foo v0.1.0 ([..]/foo) (*) foo v0.1.0 ([..]/foo)
", ",
) )
.run(); .run();
@ -1205,7 +1205,7 @@ somedep v1.0.0
somedep v1.0.0 somedep v1.0.0
pm v1.0.0 pm v1.0.0
foo v0.1.0 ([..]/foo) (*) foo v0.1.0 ([..]/foo)
", ",
) )
.run(); .run();

View file

@ -59,7 +59,7 @@ foo v0.1.0 ([..]/foo)
optdep feature \"default\" optdep feature \"default\"
optdep v1.0.0 optdep v1.0.0
optdep feature \"cat\" optdep feature \"cat\"
optdep v1.0.0 (*) optdep v1.0.0
defaultdep feature \"f1\" defaultdep feature \"f1\"
defaultdep v1.0.0 (*) defaultdep v1.0.0 (*)
defaultdep feature \"optdep\" defaultdep feature \"optdep\"
@ -139,11 +139,11 @@ a v0.1.0 ([..]/foo/a)
b feature \"default\" (command-line) b feature \"default\" (command-line)
b v0.1.0 ([..]/foo/b) b v0.1.0 ([..]/foo/b)
b feature \"feat1\" b feature \"feat1\"
b v0.1.0 ([..]/foo/b) (*) b v0.1.0 ([..]/foo/b)
b feature \"feat2\" b feature \"feat2\"
b v0.1.0 ([..]/foo/b) (*) b v0.1.0 ([..]/foo/b)
b v0.1.0 ([..]/foo/b) (*) b v0.1.0 ([..]/foo/b)
", ",
) )
.run(); .run();
@ -154,7 +154,7 @@ b v0.1.0 ([..]/foo/b) (*)
a v0.1.0 ([..]/foo/a) a v0.1.0 ([..]/foo/a)
a feature \"a1\" a feature \"a1\"
a feature \"default\" (command-line) a feature \"default\" (command-line)
a feature \"default\" (command-line) (*) a feature \"default\" (command-line)
b v0.1.0 ([..]/foo/b) b v0.1.0 ([..]/foo/b)
b feature \"default\" (command-line) b feature \"default\" (command-line)
@ -218,7 +218,7 @@ foo v0.1.0 ([..]/foo)
foo feature \"default\" (command-line) foo feature \"default\" (command-line)
foo feature \"f1\" (command-line) foo feature \"f1\" (command-line)
foo feature \"opt\" foo feature \"opt\"
foo feature \"f1\" (command-line) (*) foo feature \"f1\" (command-line)
", ",
) )
.run(); .run();
@ -234,9 +234,9 @@ notopt v1.0.0
notopt feature \"default\" notopt feature \"default\"
foo v0.1.0 ([..]/foo) foo v0.1.0 ([..]/foo)
foo feature \"default\" (command-line) foo feature \"default\" (command-line)
foo feature \"f1\" (command-line) (*) foo feature \"f1\" (command-line)
foo feature \"opt\" foo feature \"opt\"
foo feature \"f1\" (command-line) (*) foo feature \"f1\" (command-line)
", ",
) )
.run(); .run();
@ -247,7 +247,7 @@ notopt v1.0.0
notopt v1.0.0 notopt v1.0.0
notopt feature \"animal\" (command-line) notopt feature \"animal\" (command-line)
notopt feature \"cat\" notopt feature \"cat\"
notopt feature \"animal\" (command-line) (*) notopt feature \"animal\" (command-line)
notopt feature \"default\" notopt feature \"default\"
foo v0.1.0 ([..]/foo) foo v0.1.0 ([..]/foo)
foo feature \"default\" (command-line) foo feature \"default\" (command-line)
@ -277,7 +277,7 @@ opt2 v1.0.0
foo v0.1.0 ([..]/foo) foo v0.1.0 ([..]/foo)
foo feature \"f1\" (command-line) foo feature \"f1\" (command-line)
foo feature \"f2\" (command-line) foo feature \"f2\" (command-line)
foo feature \"f2\" (command-line) (*) foo feature \"f2\" (command-line)
foo feature \"opt\" (command-line) foo feature \"opt\" (command-line)
foo feature \"f1\" (command-line) (*) foo feature \"f1\" (command-line) (*)
foo feature \"opt2\" (command-line) foo feature \"opt2\" (command-line)