This fix is an enhancement of external plugin enabling. Previously, it was already able to build a customerized coredns with plugins enabled selectively, without changing coredns source code. However, all default plugins are actually bundled because of the import rule: ``` "github.com/coredns/coredns/coremain" ``` The issue is best described with the following: ``` root@localhost:/go/src/github.com/coredns/coredns/sample# cat sample.go package main import ( _ "github.com/coredns/forward" "github.com/coredns/coredns/coremain" "github.com/coredns/coredns/core/dnsserver" ) var directives = []string{ "forward", "startup", "shutdown", } func init() { dnsserver.Directives = directives } func main() { coremain.Run() } root@localhost:/go/src/github.com/coredns/coredns/sample# root@localhost:/go/src/github.com/coredns/coredns/sample# go build -v sample.go root@localhost:/go/src/github.com/coredns/coredns/sample# ./sample -plugins root@localhost:/go/src/github.com/coredns/coredns/sample# ./sample -plugins Server types: dns Caddyfile loaders: flag default Other plugins: dns.auto dns.autopath dns.bind dns.cache dns.chaos dns.debug dns.dnssec dns.dnstap dns.erratic dns.errors dns.etcd dns.federation dns.file dns.forward dns.health dns.hosts dns.kubernetes dns.loadbalance dns.log dns.nsid dns.pprof dns.prometheus dns.proxy dns.reverse dns.rewrite dns.root dns.route53 dns.secondary dns.template .... ``` This fix moves zplugins.go to a different package/directory so that it is possible to "only import plugins as needed". The following is the new output after this fix: ``` root@localhost:/go/src/github.com/coredns/coredns/sample# ./sample -plugins Server types: dns Caddyfile loaders: flag default Other plugins: dns.forward dns.prometheus shutdown startup root@localhost:/go/src/github.com/coredns/coredns/sample# ``` Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
39 lines
1.5 KiB
Go
39 lines
1.5 KiB
Go
// generated by directives_generate.go; DO NOT EDIT
|
|
|
|
package plugin
|
|
|
|
import (
|
|
// Include all plugins.
|
|
_ "github.com/coredns/coredns/plugin/auto"
|
|
_ "github.com/coredns/coredns/plugin/autopath"
|
|
_ "github.com/coredns/coredns/plugin/bind"
|
|
_ "github.com/coredns/coredns/plugin/cache"
|
|
_ "github.com/coredns/coredns/plugin/chaos"
|
|
_ "github.com/coredns/coredns/plugin/debug"
|
|
_ "github.com/coredns/coredns/plugin/dnssec"
|
|
_ "github.com/coredns/coredns/plugin/dnstap"
|
|
_ "github.com/coredns/coredns/plugin/erratic"
|
|
_ "github.com/coredns/coredns/plugin/errors"
|
|
_ "github.com/coredns/coredns/plugin/etcd"
|
|
_ "github.com/coredns/coredns/plugin/federation"
|
|
_ "github.com/coredns/coredns/plugin/file"
|
|
_ "github.com/coredns/coredns/plugin/health"
|
|
_ "github.com/coredns/coredns/plugin/hosts"
|
|
_ "github.com/coredns/coredns/plugin/kubernetes"
|
|
_ "github.com/coredns/coredns/plugin/loadbalance"
|
|
_ "github.com/coredns/coredns/plugin/log"
|
|
_ "github.com/coredns/coredns/plugin/metrics"
|
|
_ "github.com/coredns/coredns/plugin/nsid"
|
|
_ "github.com/coredns/coredns/plugin/pprof"
|
|
_ "github.com/coredns/coredns/plugin/proxy"
|
|
_ "github.com/coredns/coredns/plugin/reverse"
|
|
_ "github.com/coredns/coredns/plugin/rewrite"
|
|
_ "github.com/coredns/coredns/plugin/root"
|
|
_ "github.com/coredns/coredns/plugin/route53"
|
|
_ "github.com/coredns/coredns/plugin/secondary"
|
|
_ "github.com/coredns/coredns/plugin/template"
|
|
_ "github.com/coredns/coredns/plugin/tls"
|
|
_ "github.com/coredns/coredns/plugin/trace"
|
|
_ "github.com/coredns/coredns/plugin/whoami"
|
|
_ "github.com/mholt/caddy/startupshutdown"
|
|
)
|