-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgenerator.go
32 lines (27 loc) · 1009 Bytes
/
generator.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package resolvconf
import (
"io"
"text/template"
)
var templates = map[string]string{
"domain": "{{if .GetDomain.Name}}domain {{ .GetDomain.Name }}\n{{end}}",
"Nameserver": "{{if .GetNameservers}}{{range $nameserver := .GetNameservers}}nameserver {{$nameserver.IP}}\n{{end}}\n{{end}}",
"options": "{{if .GetOptions}}options{{range $opt := .GetOptions}} {{$opt}}{{end}}\n\n{{end}}",
"sortlist": "{{if .GetSortItems}}sortlist{{range $pair := .GetSortItems}} {{$pair}}{{end}}\n\n{{end}}",
"search": "{{if .GetSearchDomains}}search{{range $dom := .GetSearchDomains}} {{$dom.Name}}{{end}}\n\n{{end}}",
}
// Write configuration to an io.Writer
//
// return an error if unsuccessful
func (conf *Conf) Write(w io.Writer) error {
for _, key := range []string{"domain", "Nameserver", "sortlist", "search", "options"} {
tmpl, err := template.New(key).Parse(templates[key])
if err != nil {
return err
}
if err := tmpl.Execute(w, conf); err != nil {
return err
}
}
return nil
}