...

Source file src/edge-infra.dev/hack/tools/bzldot/main.go

Documentation: edge-infra.dev/hack/tools/bzldot

     1  // simplify-bzl-dot accepts a Graphviz graph represented as DOT and simplifies
     2  // the Bazel labels for each node, producing easier to read graphs.
     3  package main
     4  
     5  import (
     6  	"bufio"
     7  	"fmt"
     8  	"os"
     9  	"regexp"
    10  	"strings"
    11  
    12  	"edge-infra.dev/pkg/lib/build/bazel"
    13  )
    14  
    15  func main() {
    16  	re := regexp.MustCompile("\"(.*?)\"")
    17  	scanner := bufio.NewScanner(os.Stdin)
    18  	for scanner.Scan() {
    19  		text := scanner.Text()
    20  		fmt.Println(re.ReplaceAllStringFunc(text, func(s string) string {
    21  			labels := strings.Split(s, "\\n")
    22  			for i := range labels {
    23  				labels[i] = bazel.SimplifyLabel(strings.TrimSuffix(strings.TrimPrefix(labels[i], "\""), "\""))
    24  			}
    25  			return fmt.Sprintf("\"%s\"", strings.Join(labels, "\\n"))
    26  		}))
    27  	}
    28  }
    29  

View as plain text