// simplify-bzl-dot accepts a Graphviz graph represented as DOT and simplifies // the Bazel labels for each node, producing easier to read graphs. package main import ( "bufio" "fmt" "os" "regexp" "strings" "edge-infra.dev/pkg/lib/build/bazel" ) func main() { re := regexp.MustCompile("\"(.*?)\"") scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { text := scanner.Text() fmt.Println(re.ReplaceAllStringFunc(text, func(s string) string { labels := strings.Split(s, "\\n") for i := range labels { labels[i] = bazel.SimplifyLabel(strings.TrimSuffix(strings.TrimPrefix(labels[i], "\""), "\"")) } return fmt.Sprintf("\"%s\"", strings.Join(labels, "\\n")) })) } }