github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/util/fsm/gen/write_reports.go.tmpl (about) 1 // This template go file populated and run by reports.sh. 2 package main 3 4 import ( 5 "fmt" 6 "io" 7 "os" 8 "path/filepath" 9 "strings" 10 11 "{tmpl-full-pkg}" 12 ) 13 14 func main() { 15 err := writeDot(os.Args[1]) 16 if err == nil { 17 err = writeReport(os.Args[2]) 18 } 19 if err != nil { 20 fmt.Fprint(os.Stderr, err.Error()) 21 os.Exit(1) 22 } 23 } 24 25 func writeDot(fName string) error { 26 f, err := os.OpenFile(fName, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) 27 if err != nil { 28 return err 29 } 30 31 writeHeader(f) 32 fmt.Fprintf(f, "// To generate a .png file, run:\n" + 33 "// brew install cairo pango\n" + 34 "// brew install graphviz --with-pango\n" + 35 "// dot -Tpng %s -o %s.png\".\n\n" + 36 "// The Pango/Cairo renderer is needed for rendering our HTML labels.\n", 37 fName, strings.TrimSuffix(fName, filepath.Ext(fName))) 38 {tmpl-base-pkg}.{tmpl-type}.WriteDotGraphString(f, "{tmpl-start-state}") 39 return f.Close() 40 } 41 42 func writeReport(fName string) error { 43 f, err := os.OpenFile(fName, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) 44 if err != nil { 45 return err 46 } 47 48 writeHeader(f) 49 fmt.Fprintln(f) 50 {tmpl-base-pkg}.{tmpl-type}.WriteReport(f) 51 return f.Close() 52 } 53 54 func writeHeader(w io.Writer) { 55 fmt.Fprintf(w, "// Code generated by %q; DO NOT EDIT.\n", os.Args[3]) 56 }