in internal/cmd/tree/util.go [29:88]
func printGraph(g graph.Graph, typeFilter string) {
elements := make([]graph.Node, 0)
fromLinks := make(map[graph.Node][]graph.Node)
toLinks := make(map[graph.Node][]graph.Node)
for _, el := range g.Nodes() {
if el.Type == typeFilter {
elements = append(elements, el)
froms := g.Get(el)
if allLinks || len(froms) > 0 {
fromLinks[el] = froms
}
if twoWayTree {
tos := g.GetReverse(el)
if allLinks || len(tos) > 0 {
toLinks[el] = tos
}
}
}
}
if len(fromLinks) == 0 && len(toLinks) == 0 {
return
}
fmt.Printf("%s:\n", typeFilter)
for _, el := range elements {
if !allLinks && len(fromLinks[el]) == 0 && len(toLinks[el]) == 0 {
continue
}
fmt.Printf(" %s:\n", console.Yellow(el.Name))
if allLinks || len(fromLinks[el]) > 0 {
if len(fromLinks[el]) == 0 {
fmt.Println(" DependsOn: []")
} else {
fmt.Println(" DependsOn:")
printLinks(fromLinks[el], "Parameters")
printLinks(fromLinks[el], "Resources")
printLinks(fromLinks[el], "Outputs")
}
}
if twoWayTree && (allLinks || len(toLinks[el]) > 0) {
if len(toLinks[el]) == 0 {
fmt.Println(" UsedBy: []")
} else {
fmt.Println(" UsedBy:")
printLinks(toLinks[el], "Parameters")
printLinks(toLinks[el], "Resources")
printLinks(toLinks[el], "Outputs")
}
}
}
}