caddyfile: Improve Dispenser.NextBlock() to support nesting

This commit is contained in:
Matthew Holt
2019-09-10 19:21:52 -06:00
parent 0cf592fa2e
commit 2459c292a4
14 changed files with 95 additions and 58 deletions

View File

@ -39,32 +39,34 @@ func init() {
// }
//
func (t *Transport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
for d.NextBlock() {
switch d.Val() {
case "root":
if !d.NextArg() {
return d.ArgErr()
}
t.Root = d.Val()
for d.Next() {
for d.NextBlock(0) {
switch d.Val() {
case "root":
if !d.NextArg() {
return d.ArgErr()
}
t.Root = d.Val()
case "split":
if !d.NextArg() {
return d.ArgErr()
}
t.SplitPath = d.Val()
case "split":
if !d.NextArg() {
return d.ArgErr()
}
t.SplitPath = d.Val()
case "env":
args := d.RemainingArgs()
if len(args) != 2 {
return d.ArgErr()
}
if t.EnvVars == nil {
t.EnvVars = make(map[string]string)
}
t.EnvVars[args[0]] = args[1]
case "env":
args := d.RemainingArgs()
if len(args) != 2 {
return d.ArgErr()
}
if t.EnvVars == nil {
t.EnvVars = make(map[string]string)
}
t.EnvVars[args[0]] = args[1]
default:
return d.Errf("unrecognized subdirective %s", d.Val())
default:
return d.Errf("unrecognized subdirective %s", d.Val())
}
}
}
return nil