Skip to content
Snippets Groups Projects
Select Git revision
  • f01868f778045c9c961fefc355a19f0fef5aace4
  • master default protected
2 results

__init__.py

Blame
  • 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)
    	}
    }