github.com/tiagovtristao/plz@v13.4.0+incompatible/src/query/deps.go (about) 1 package query 2 3 import ( 4 "fmt" 5 "github.com/thought-machine/please/src/core" 6 ) 7 8 // Deps prints all transitive dependencies of a set of targets. 9 func Deps(state *core.BuildState, labels []core.BuildLabel, unique, hidden bool, targetLevel int) { 10 targets := map[*core.BuildTarget]bool{} 11 for _, label := range labels { 12 printTarget(state, state.Graph.TargetOrDie(label), "", targets, unique, hidden, 0, targetLevel) 13 } 14 } 15 16 func printTarget(state *core.BuildState, target *core.BuildTarget, indent string, targets map[*core.BuildTarget]bool, 17 unique, hidden bool, currentLevel int, targetLevel int) { 18 19 if unique && targets[target] { 20 return 21 } 22 23 targets[target] = true 24 if state.ShouldInclude(target) { 25 if hidden || target.Parent(state.Graph) == nil { 26 fmt.Printf("%s%s\n", indent, target.Label) 27 } 28 } 29 if !unique { 30 indent = indent + " " 31 } 32 33 // access the level of dependency, as default is -1 which prints out everything 34 if targetLevel != -1 && currentLevel == targetLevel { 35 return 36 } 37 38 currentLevel++ 39 40 for _, dep := range target.Dependencies() { 41 printTarget(state, dep, indent, targets, unique, hidden, currentLevel, targetLevel) 42 } 43 }