2019-07-08 11:00:04 +02:00
package main
import (
"fmt"
"io"
"os"
"strings"
2019-08-03 03:58:23 +02:00
"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"
2019-07-08 11:00:04 +02:00
)
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
2019-07-10 09:26:04 +02:00
-- > ` )
w . writeln ( )
2019-07-08 11:00:04 +02:00
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 ... )
}