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  }