Commit 98c86f3f authored by Miek Gieben's avatar Miek Gieben Committed by GitHub

go gen improvements (#524)

Remove the "gen" directory and move directives_generate.go out of it.
Add a build ignore tag so it isn't build by default. Cleanup the go gen
invocations so there are not seen as package docs.

Simplify the code a bit and don't run go gen twice.
parent a5f3cb5f
...@@ -50,7 +50,7 @@ clean: ...@@ -50,7 +50,7 @@ clean:
.PHONY: gen .PHONY: gen
gen: gen:
go generate ./core/... go generate coredns.go
.PHONY: distclean .PHONY: distclean
distclean: clean distclean: clean
......
// Package core registers the server and all plugins we support. // Package core registers the server and all plugins we support.
// Additional middleware packages
//go:generate go run ../gen/directives_generate.go ../middleware.cfg
package core package core
import ( import (
......
//go:generate go run ../../gen/directives_generate.go ../../middleware.cfg
package dnsserver package dnsserver
import ( import (
......
// generated by directives_generate.go; DO NOT EDIT // generated by directives_generate.go; DO NOT EDIT
package dnsserver package dnsserver
// Directives are registered in the order they should be // Directives are registered in the order they should be
// executed. // executed.
// //
......
package main package main
//go:generate go run directives_generate.go
import "github.com/miekg/coredns/coremain" import "github.com/miekg/coredns/coremain"
func main() { func main() {
......
//+build ignore
package main package main
import ( import (
"bufio" "bufio"
"go/format"
"io/ioutil" "io/ioutil"
"log"
"os" "os"
"sort" "sort"
"strconv" "strconv"
"strings" "strings"
) )
var middlewarePath = "github.com/miekg/coredns/middleware/"
var header = "// generated by directives_generate.go; DO NOT EDIT\n"
func main() { func main() {
mwFile := os.Args[1]
mi := make(map[string]string, 0) mi := make(map[string]string, 0)
md := make(map[int]string, 0) md := make(map[int]string, 0)
if file, err := os.Open(mwFile); err == nil { file, err := os.Open(middlewareFile)
fatalIfErr(err)
defer file.Close() defer file.Close()
scanner := bufio.NewScanner(file) scanner := bufio.NewScanner(file)
...@@ -43,48 +44,32 @@ func main() { ...@@ -43,48 +44,32 @@ func main() {
} }
} }
var orders []int genImports("core/zmiddleware.go", "core", mi)
for k := range md { genDirectives("core/dnsserver/zdirectives.go", "dnsserver", md)
orders = append(orders, k)
}
sort.Ints(orders)
if os.Getenv("GOPACKAGE") == "core" {
genImports("zmiddleware.go", mi)
}
if os.Getenv("GOPACKAGE") == "dnsserver" {
genDirectives("zdirectives.go", md)
}
} else {
os.Exit(1)
}
os.Exit(0)
} }
func genImports(file string, mi map[string]string) { func genImports(file, pack string, mi map[string]string) {
outs := header + "package " + os.Getenv("GOPACKAGE") + "\n\n" + "import (" outs := header + "package " + pack + "\n\n" + "import ("
if len(mi) > 0 { if len(mi) > 0 {
outs += "\n" outs += "\n"
} }
for _, v := range mi { for _, v := range mi {
outs += " _ \"" + v + "\"\n" outs += `_ "` + v + `\` + "\n"
} }
outs += ")\n" outs += ")\n"
err := ioutil.WriteFile(file, []byte(outs), 0644) res, err := format.Source([]byte(outs))
if err != nil { fatalIfErr(err)
os.Exit(1)
}
err = ioutil.WriteFile(file, res, 0644)
fatalIfErr(err)
} }
func genDirectives(file string, md map[int]string) { func genDirectives(file, pack string, md map[int]string) {
outs := header + "package " + os.Getenv("GOPACKAGE") + "\n\n" outs := header + "package " + pack + "\n\n"
outs += ` outs += `
// Directives are registered in the order they should be // Directives are registered in the order they should be
// executed. // executed.
...@@ -104,13 +89,26 @@ var directives = []string{ ...@@ -104,13 +89,26 @@ var directives = []string{
sort.Ints(orders) sort.Ints(orders)
for _, k := range orders { for _, k := range orders {
outs += " \"" + md[k] + "\",\n" outs += `"` + md[k] + `",` + "\n"
} }
outs += "}\n" outs += "}\n"
err := ioutil.WriteFile(file, []byte(outs), 0644) res, err := format.Source([]byte(outs))
fatalIfErr(err)
err = ioutil.WriteFile(file, res, 0644)
fatalIfErr(err)
}
func fatalIfErr(err error) {
if err != nil { if err != nil {
os.Exit(1) log.Fatal(err)
} }
} }
const (
middlewarePath = "github.com/miekg/coredns/middleware/"
middlewareFile = "middleware.cfg"
header = "// generated by directives_generate.go; DO NOT EDIT\n"
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment