github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/common/metrics/cmd/gendoc/main.go (about) 1 /* 2 Copyright hechain. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package main 8 9 import ( 10 "bytes" 11 "flag" 12 "io/ioutil" 13 "os" 14 "text/template" 15 16 "github.com/hechain20/hechain/common/metrics/gendoc" 17 "golang.org/x/tools/go/packages" 18 ) 19 20 // Gendoc can be used used to discover the metrics options declared at the 21 // package level in the fabric tree and output a table that can be used in the 22 // documentation. 23 24 var templatePath = flag.String( 25 "template", 26 "docs/source/metrics_reference.rst.tmpl", 27 "The documentation template.", 28 ) 29 30 func main() { 31 flag.Parse() 32 33 patterns := flag.Args() 34 if len(patterns) == 0 { 35 patterns = []string{"github.com/hechain20/hechain/..."} 36 } 37 38 mode := packages.NeedName | packages.NeedFiles | packages.NeedCompiledGoFiles | packages.NeedImports | packages.NeedSyntax | packages.NeedTypesInfo 39 pkgs, err := packages.Load(&packages.Config{Mode: mode}, patterns...) 40 if err != nil { 41 panic(err) 42 } 43 44 options, err := gendoc.Options(pkgs) 45 if err != nil { 46 panic(err) 47 } 48 49 cells, err := gendoc.NewCells(options) 50 if err != nil { 51 panic(err) 52 } 53 54 funcMap := template.FuncMap{ 55 "PrometheusTable": func() string { 56 buf := &bytes.Buffer{} 57 gendoc.NewPrometheusTable(cells).Generate(buf) 58 return buf.String() 59 }, 60 "StatsdTable": func() string { 61 buf := &bytes.Buffer{} 62 gendoc.NewStatsdTable(cells).Generate(buf) 63 return buf.String() 64 }, 65 } 66 67 docTemplate, err := ioutil.ReadFile(*templatePath) 68 if err != nil { 69 panic(err) 70 } 71 72 tmpl, err := template.New("metrics_reference").Funcs(funcMap).Parse(string(docTemplate)) 73 if err != nil { 74 panic(err) 75 } 76 77 if err := tmpl.Execute(os.Stdout, ""); err != nil { 78 panic(err) 79 } 80 }