Select Git revision
main.go 1.00 KiB
package main
import (
"flag"
"io/ioutil"
"log"
"os"
"os/exec"
"strings"
floatschema "git.autistici.org/ai3/tools/float-dashboard/schema/float"
"git.autistici.org/ai3/tools/float-dashboard/schema/graph"
"gopkg.in/yaml.v3"
)
var service = flag.String("service", "", "filter this service only")
func main() {
log.SetFlags(0)
flag.Parse()
data, err := ioutil.ReadFile(flag.Arg(0))
if err != nil {
log.Fatal(err)
}
var svcmap map[string]*floatschema.Service
if err := yaml.Unmarshal(data, &svcmap); err != nil {
log.Fatal(err)
}
var dot string
g := graph.ServiceGraph(svcmap)
if *service != "" {
g = g.Filter(graph.FilterEdgeByService(*service))
dot = g.Render(
graph.StyleNodeByService(*service),
graph.StyleEdgeByService(*service),
)
} else {
dot = g.Render(nil, nil)
}
// Run graphviz to render to SVG.
cmd := exec.Command("dot", "-Tsvg")
cmd.Stdin = strings.NewReader(dot)
cmd.Stderr = os.Stderr
cmd.Stdout = os.Stdout
if err := cmd.Run(); err != nil {
log.Fatal(err)
}
}