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  }