83 lines
1.7 KiB
Go
83 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/containous/traefik/v2/pkg/config/env"
|
|
"github.com/containous/traefik/v2/pkg/config/flag"
|
|
"github.com/containous/traefik/v2/pkg/config/generator"
|
|
"github.com/containous/traefik/v2/pkg/config/parser"
|
|
"github.com/containous/traefik/v2/pkg/config/static"
|
|
"github.com/containous/traefik/v2/pkg/log"
|
|
)
|
|
|
|
func main() {
|
|
genStaticConfDoc("./docs/content/reference/static-configuration/env-ref.md", "", env.Encode)
|
|
genStaticConfDoc("./docs/content/reference/static-configuration/cli-ref.md", "--", flag.Encode)
|
|
}
|
|
|
|
func genStaticConfDoc(outputFile string, prefix string, encodeFn func(interface{}) ([]parser.Flat, error)) {
|
|
logger := log.WithoutContext().WithField("file", outputFile)
|
|
|
|
element := &static.Configuration{}
|
|
|
|
generator.Generate(element)
|
|
|
|
flats, err := encodeFn(element)
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
|
|
err = os.RemoveAll(outputFile)
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
|
|
file, err := os.OpenFile(outputFile, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666)
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
|
|
defer file.Close()
|
|
|
|
w := errWriter{w: file}
|
|
|
|
w.writeln(`<!--
|
|
CODE GENERATED AUTOMATICALLY
|
|
THIS FILE MUST NOT BE EDITED BY HAND
|
|
-->`)
|
|
w.writeln()
|
|
|
|
for i, flat := range flats {
|
|
w.writeln("`" + prefix + strings.ReplaceAll(flat.Name, "[0]", "[n]") + "`: ")
|
|
if flat.Default == "" {
|
|
w.writeln(flat.Description)
|
|
} else {
|
|
w.writeln(flat.Description + " (Default: ```" + flat.Default + "```)")
|
|
}
|
|
|
|
if i < len(flats)-1 {
|
|
w.writeln()
|
|
}
|
|
}
|
|
|
|
if w.err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
}
|
|
|
|
type errWriter struct {
|
|
w io.Writer
|
|
err error
|
|
}
|
|
|
|
func (ew *errWriter) writeln(a ...interface{}) {
|
|
if ew.err != nil {
|
|
return
|
|
}
|
|
|
|
_, ew.err = fmt.Fprintln(ew.w, a...)
|
|
}
|